One Note Jam

Series 60開発・エミュレータ上でパニック情報を表示させる (2005-06-08)

パニック情報とは?

702NKでの開発で困っている点として、「パニック発生時にパニック情報が表示されない」ということが挙げられます。Symbian OS上での開発(デバッグ)において、パニック情報は非常に重要なので、これには悩まされています。

パニック(Panic)というのは、復旧不可能なエラーが発生した際にプログラムの動作を即座に停止させるものです。パニックの際には「パニックのカテゴリ(を示す文字列)」と「パニック番号」の2つの情報が得られます。システム側で発生したパニックであれば、これらの情報からパニック発生の原因がある程度わかります。また、アプリケーション側でも明示的にパニックを発生させることができるので、アサーションを行う際などにも使われます。

いずれにしても、パニック情報はエラーの原因を究明する際の足がかりとなる重要な情報です。ですが、前述のとおりパニック情報は表示されず、パニック発生時には以下のような表示になってしまいます。

パニック発生時の画面(パニック情報なし) 表示されるのはパニックが発生したアプリケーション名のみ。

これはエミュレータでの画面ですが、実機ではメッセージの表示すらなく終了してしまいます。

エミュレータ上では解決

そんな中、先日『Symbian OS/C++プログラマのためのNokia Series 60アプリケーション開発ガイド』(長い題名だ)のp.71にこんなことが書かれてあるのを見つけました。

パニック番号やテキストによるコンテクストメッセージの詳細を(中略)表示させるには、ErrRdという空のファイルを、\Epoc32\wins\c\system\bootdataフォルダに作成する必要がある。

さっそく記述に従ってファイルを置いてみたところ、以下のようにパニック情報が表示されるようになりました。

パニック発生時の画面(パニック情報あり) パニックカテゴリ("USER")とパニック番号(130)が表示される。

ちなみに、「USER 130」のパニックは、配列クラス(RArray)に対して範囲外のインデックスを使ってアクセスしようとした際などに発生します(詳しくはSystem panic referenceをご覧ください)。こういった情報があるかないかによって、デバッグの効率が大きく影響されることは想像に難くないと思います。

あとは実機上で……

これでエミュレータ上ではパニック情報がわかるようになったので、あとは実機上でなんとかなればいいのですが……。ちなみに、実機上でも同じようなこと(c:\system\bootdataフォルダに空のファイルErrRdを作成)をやってみたものの、結果は変わらず。何か方法はないものか。

posted at 2005-06-08 | Permalink

© 2004-2008 ENDO