見出し画像

おとり捜査でバグを見つける

 犯人を見つける捜査と同じような感じです。正しく動く場合(シロ)とそうでない場合(クロ)を見極めたり、たまにおとり捜査みたいにトラップをしかけたりします。容疑者(バグ)はたいてい隅っこ(データ領域の境界)にいます。なかなかバグがみつからないときは、たいてい2つ以上のバグがいます。お互い全く関係のない複数の犯人が同じ事件に関わっていたら捜査は難航しそうですよね。この場合、単純にシロとクロを分けていてはみつからない場合があります。
 プログラミングをしていて想定していない挙動を見つけると、どうしてもその挙動を抑えるように修正しようとしてしまいます。抑えたつもりが別のところで不具合が生じることがよくあります。そんな時は、一旦わざと悪い方向に動いてしまうように修正して、思った通りに悪くなるかどうかを確認して、本当にその修正が正しいかどうかを見極めることが必要です。容疑者を泳がせておいておとり捜査をするような感覚です。全く無関係な容疑者を執拗に追い回して、結局、最初からやり直しということもよくあります。
 それならまだしも、不毛な捜査で全体を壊してしまうこともあります。ある程度プログラムが正常に動作しているときにバックアップをとることも大切ですが、深刻なバグが見つかった時に、プログラム全体を修正する前にバックアップをとっておくと安心です。

4. シャーロックホームズ


この記事が気に入ったらサポートをしてみませんか?