簡単なデバッグ手法:スナップショット
プログラムは思うようには動かない。書かれているとおりに動く。
という名言があります。
毎度、管理人イガジーです。
プログラムを書いて、実行させたら完璧に動いた。完了。
なんていう事はきわめてマレです。
たいていは、「あれ?」「どうした?」と思うようには動きません。
そこで、デバッグという作業をすることになります。
デバッグ(虫取り)とは、意図しない動作の原因を調べ修正する
という作業です。
Eclipseには、ブレイクポイント設定やステップ動作、変数ウォッチ
などの強力なデバッグ機能がありますが、
ざっと確認したいような場合は、ソースコードにprintfを埋め込んで
それを眺めるという手法があります。俗にスナップショットと呼びます。
埋め込んだprintfのメッセージで、そこを通過した事が分かります。
また、その時の変数を表示させて、終了判定や境界判定が
正しいか、も確認することができます。
例えば、Listenerを作っても、それが動作していない気がする時は
その中にSystem.out.printf(“xxxListener\n”); などを埋め込んで
表示されるかどうかを見ます。
表示されなかったら、「あぁ、addListennerしてなかった…orz.」
などと気がついたりします。
Canvasへの描画しているつもりなのに、表示されない場合も
描画処理のあとにSystem.out.println(“Draw %s\n”,str); などを
埋め込んでみます。
strの内容が、それなりに表示されて(null や “”ではなかった)
「あぁ、repaint() してなかった…orz」と気がついたりもします。
※ 上記2例は、最近のイガジー自身の実例です。
スナップショットは、Java以外の言語でも使える汎用的な手法です。
ソースを眺めて唸るより、実際に動かしながら確認するのが早道です。
恥ずかしがらずに、やってみましょう。
この記事へのコメントはこちら