$ gcc -g keyinput.c #デバッガにかけるために、 -gオプションをつけてコンパイルする。
$ gdb a.out #実行ファイルを引数としてgdbを起動する。
GNU gdb 4.17.0.11 with Linux support
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(gdb) break 9 #7行目のscanf文で入力されたvalueの値を見るために、 9行目の
if文の前でプログラムが停止するように設定する。このような停止
位置をブレイクポイントと呼ぶ。
Breakpoint 1 at 0x8048424: file keyinput.c, line 9.
(gdb) run #プログラムの実行
Starting program: /home/miyao/Soft2/a.out
Enter number : 23 #整数値の入力
Breakpoint 1, main () at keyinput.c:9
9 if(value = 10){ /* 数値が10であるか判定 */
#設定したブレイクポイントである 9行目の実行直前でプログラム
が停止したことを示している。
(gdb) print value #変数値valueの表示
$1 = 134518020 #入力したはずの値23が表示されない!この時点で、scanf文の
valueにアドレス演算子がないことに気づく。
(gdb) print value = 23 #変数valueに値23を代入する。
$2 = 23
(gdb) step #次の行を実行
10 printf("Input number is 10.\n");
#valueの値が23のはずなのに、if文の条件が真になっている。
ここで、if文の条件文が代入式になっていることに気づく。
(gdb) quit #gdbの終了
The program is running. Exit anyway? (y or n) y
|