エミュレーターでは正常に動作していたのに、実機では異常終了するのですが … ?
下記の項目についてチェックします。
- AEECallback 構造体は初期化されていますか?
- 変数の初期化を忘れてませんか?
- ファイルやネットワークなど MIF ファイルの特権レベルは正しく設定されていますか?
- 実機で動作させたとき、アプリ実行に必要なヒープ容量は確保されてますか?
- 不正な境界でメモリアクセスしていませんか?
ARM CPU の場合、奇数番地から2バイトや4バイトのデータをアクセスすると、CPU 例外が発生します。 - 大域変数や静的変数を使っていませんか?
- DBGPRINTF() などを使って、実機上での動作を追跡してみてください。
※ 大量に DBGPRINTF() を実行すると端末のバッファが溢れてログが欠損することがあります。
そのような場合、端末を sync dbgprintf モードに設定します。
BREW 3.1 端末ならば、
###273933284#
###4#
と続けて押すと sync モードに移行できます。
###0#
で解除できます。(※)
※ SYNC モードを解除できない場合:
デバッグキーモードから解除されるタイミングには機種依存があります。ある機種は端末再起動でデバッグに関する設定がすべて解除されるのに対して、ある機種ではデバッグキーモードの設定のみ解除されたりします。
端末再起動後も SYNC モードが解除されない場合は、再度デバッグキーモードに移行し、 ###0# を押します。
このとき、端末は SYNC モードでキー入力への応答が非常に遅くなっていますので、ゆっくりとキーを押して、確実にキー入力を処理させることがポイントです。
ロガーを表示させて、キーイベントがログに表示されたら、次のキーを押す操作を繰り返せば確実に設定できます。