next up previous contents
Next: 8.4 デバッガーを利用する Up: 8 デバッグのあれこれ Previous: 8.2 実行時のエラーをやっつけろ

8.3 エラー個所を探せ

--やっぱり、人呼んで「printf() デバッグ」が基本--

どこで中断したかを調べるのが近道だが、プログラムの中に printf() 文 をいくつか挿入して、場所を調べるのが素朴だが簡単かつ確実である。
        ...
        printf("part1\n");
        ...
        ...
        printf("part2\n");
        ...
        ...
        printf("part3\n");
        ...
        ...
        printf("part4\n");

このプログラムを走らせて、part2 は表示されるが、part3 は表 示されずにプログラムが中断するならば、printf("part2\n");printf("part2\n"); の間のコードを実行する際に問題が起こった、と いうことである。
(注意: 何でもないようだが、$\backslash$n は省略してはいけない。 これは $\backslash$n がないとバッファーがフラッシュされず、すぐ には実際に画面に出力されないことがあるからである。)

printf() は一度に複数差し込んで一気に調べることが出来る。 大きなプログラムの場合は、真ん中あたりに差し込んで、エラーの個所を 半分、半分に追い詰めていくのが良い。つまり

-- 探し物は二分探索が賢い --


next up previous contents
Next: 8.4 デバッガーを利用する Up: 8 デバッグのあれこれ Previous: 8.2 実行時のエラーをやっつけろ
桂田 祐史
2014-05-27