2009年8月3日月曜日

原因不明のバグの探し方

どこかでエラーが混入して、プログラムが正しく動かない、なんてことは良くある。
プログラムはかなりの量になるため、最初から順番に調べていくのは、かない骨が折れそうだ・・・。
がするしかない。という様な悲惨な状況になる場合もある。今日も徹夜か、ハァ~てな状態である。
この時には、最初から探してはいけない。
プログラムのモジュール単位に分けて、半分ずつテストをするのである。
そして、半分の内、動かない方のモジュールをさらに半分に分けてテスト。
この操作を繰り返して、特定のモジュールを探し出し、モジュール内のソースコードを半分ずつに分けてテストを繰り返す。
短時間で、原因のある場所にたどり着く。
この方法は、プログラミングではバイナリーツリー・サーチというごく一般的な方法である。
これを応用しない手はない。

もし、SubVersionなどでソースを管理していた場合には、もっと簡単。
元に戻したソースをビルドして、動くことを確認したのなら、WinMergeやDiffなどでフォルダ毎比較。
違っているソースを比較すれば、もっと早く原因が分かる。

経験上、原因不明のバグは、だいたい一晩で安易にで作ったコピペ・コードの書き直し間違えとかじゃないでしょうか(^^;)

0 件のコメント:

コメントを投稿