C言語のデバッグ方法

C言語のプログラムで計算結果が正しくない(バグが出る)時の直し方

C言語のプログラムでバグのある時は、以下の手順で直してゆく。

  1. バグ(エラー)のある場所を見つける
  2. バグの原因を突き止める
  3. バグを取る

例えば、計算した結果を出力するプログラムで、 出てくる数値が間違っているときは、 まず、どこがおかしいかを発見して、それから原因を突き止めるようにする。

バグのある場所を見つける

じっとプログラムを眺めていても、なかなかバグは見つからない。
バグを取る時は目を動かすより、手を動かそう。
まず怪しいところにprintf()を入れる。
適当なところにprintf()を入れて、変数の値を確かめると、どこがおかしいのかを突き止めらる。
手計算をしてみた値と、printf()で出した値が、違わないかどうかを一つ一つ確かめてゆく。
例えばプログラムの中に
z = x * y ; /* x, y, z はdouble */
という部分があって、どうもzの値がおかしいと見当をつけたら、 この場合、zを計算するためにxとyを使っているわけだから、
printf("%lf %lf\n",x,y);
をこの式の前か後ろに付け加えて、コンパイルし直して実行し、 値が正しいかどうかを確かめる。
その時、入力データをなるべく簡単なものにした方が、わかりやすくなる。

バグの原因を突き止める

バグの場所がわかったら、次に原因を考える。

バグを取る

原因がわかったら、正しく書き直して、もう一度コンパイルして実行をやり直す。
それでもバグのある場合は、もう一度最初からやり直す。

参考


Home | Contents
Mail