まずは、なにかプログラムを持ってきましょう。
以下で用いる例は、debugTest0.cです。
を計算するつもり(そうはなっていない)のプログラムです。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
float result = 0.0;
for(i = 1; i < 10; i++) {
float tmp = 1/i;
result = result + tmp;
}
printf("result = %f\n", result);
fflush(stdout); /* この時点で、出力を強制したければ */
return 0;
}
動作させると、なぜか、
result = 1.000000
という結果になってしまいます。なぜでしょう?
ってことで、よく分からないものは、デバッガにかけて調べましょう。 (一瞬で答えが分かったという人も、今後に備えて、デバッガの使い方を学びましょう)
デバッグ実行の際は、メニューの「デバッグ」→「デバッグの開始」でOKです。
デバッグ用画面になります。
この画面は、7行目にブレークポイントを入れて、そこで停止したところです。
画面が以下のように分かれています。
ブレイクポイントは、プログラムに止まってほしい場所のことです。
なんてときに使います。
プログラムを一行進めてみましょう。「デバッグ」ウィンドウの、「ステップオーバー」というボタンを押してください。
今止まっているのは、
です。ステップ実行で、一行実行させると、
ループを何度か回ると、変数 tmp
の値が、「あれれ?」って感じになるはずです。
補足:
プログラムを再開(一行単位でなく、次のブレイクポイントなり終了まで実行)させたいときは、
「続行」アイコンを押しましょう。
ちなみに、11行めのprintf() を実行し終わっても、コンソールに文字出力がでないことがあります。
これは、書き込んだ文字がバッファにたまったママになっているからで、12行目の様に
fflush(stdout);
とかしてやると、きちんと出力されます。
補足:
こちら を読んで、なんなら課題を解いてみてください。
局所変数と違い、大域変数一覧は、表示されません。
でも、代わりに「ウォッチ式」にて、指定した式の内容を表示できますので、そちらを使いましょう。
+
ボタンを押せば式を追加できるはず。