alg-ljの日記

2005-10-09

デバッグをやりやすく

OnBoardCでの開発はデバッグがやりづらい、という欠点があります。
Fatal Errorなどで止まってしまった場合など、プログラムのどこの部分で止まってしまったのかを見つけるのが難しくなります。
で、この「どこでプログラムが止まるのか」を見つけるための手段として、
アラートを使う
という方法があります。

f:id:alg-lj:20051009230235p:image
例えば、こんなアラートがあったとします。
で、問題がありそうな箇所に、かたっぱしからアラートを表示するようにしておくわけです。

命令1;
FrmAlert(1000);
命令2;
FrmAlert(1000);
命令3;
FrmAlert(1000);
命令4;

こんな感じですね。
で、コンパイルして実行してみたときに、何回目のアラートで止まるかを確認します。
例えば上記の場合に2回目のアラートが表示された直後に止まったら、命令3のところがおかしい、ということになります。

もうちょっと発展させてみましょう。
f:id:alg-lj:20051009231105p:image
こんなアラートを作っておきます。
で、問題がありそうな箇所に下記のように記述します。

UInt8 i;
char tmp[10];

命令1;
i++;
StrPrintF(tmp,"%d回目",i);
FrmCustomAlert(1000,tmp,"のアラートです。"," ");
命令2;
i++;
StrPrintF(tmp,"%d回目",i);
FrmCustomAlert(1000,tmp,"のアラートです。"," ");
命令3;
i++;
StrPrintF(tmp,"%d回目",i);
FrmCustomAlert(1000,tmp,"のアラートです。"," ");
命令4;

こうすると、アラートそのものに回数が表示されます。

もうちょっと応用すれば、画面からは見えない変数の値を確認するのにも使えますね。
画面に直接変数の値を描画してもいいんですが、それだと狭い画面の一部を使うことになってしまうので、表示を確認したらすぐ消せるアラートは結構便利に使えます。
ただ、リアルタイムゲームには向きませんけどね。

chamekanchamekan 2005/10/12 00:30 この記事いいですねえ(^_^;)。そういえば、WebのJavaScriptなんかでも、ちょっとしたデバッグには、alert使ってたのに、Palmでは、わたしのほうは、GUI系無視してリアルタイム系でつっぱしってるので、実はよくわかってなかったり(^_^;)。
こういう個々人がやってるちょっとしたコツというのが大事ですねえ。

alg-ljalg-lj 2005/10/12 20:59 >個々人がやってるちょっとしたコツというのが大事
まったく同感です。
やっている本人は普通のことだと思っていても、他の人にとっては目から鱗だったりしますからね。
鱗を落とせる可能性に賭けて、ちょっとしたことでも書きとめていくつもりです。

ゲスト



トラックバック - http://onboardc.g.hatena.ne.jp/alg-lj/20051009