ソフトウェア設計及び演習2015

書き込みの監視(watch)

書き込みの監視 [watch]

先ほどと同様に,実行ファイルを引数として gdb を起動させる.

$ gdb test
...

sort 関数にブレークポイントを設定する.

(gdb) break sort
Breakpoint 1 at 0x400553: file test.c, line 11.

run コマンドでプログラムを実行して,delete コマンドでブレークポイントを削除する.

(gdb) run
Starting program: /home/staff/luxin/OLD/program1/test
3       2       1

Breakpoint 1, sort (x=0x601028, n=3) at test.c:11
11          for (i = 0; i < n-1; i++) {
(gdb) delete 1

watch コマンドで変数 j の書き込みを監視する.

(gdb) watch j
Hardware watchpoint 2: j

continue コマンドを2回使用する.変数 j を書き込み時に,プログラムが一時停止する.

(gdb) continue
Continuing.
Hardware watchpoint 2: j

Old value = 4195424
New value = 2
0x0000000000400568 in sort (x=0x601028, n=3) at test.c:12
12              for (j = n-1; j > i; j--) {

(gdb) continue
Continuing.
Hardware watchpoint 2: j

Old value = 2
New value = 1
0x00000000004005df in sort (x=0x601028, n=3) at test.c:12
12              for (j = n-1; j > i; j--) {

info watchpoints コマンドによって,設定されたすべてのウォッチポイントを表示する.

(gdb) info watchpoints
Num     Type           Disp Enb Address            What
2       hw watchpoint  keep y                      j
        breakpoint already hit 2 times

delete コマンドでウォッチポイントを削除する.

(gdb) delete 2
(gdb) info watchpoints
No watchpoints.

continue コマンドを使用してプログラムの最後まで実行して,quit コマンドで gdb を終了させる.

(gdb) continue
Continuing.
1       3       2
1       2       3

Program exited with code 02.
(gdb) quit


最終更新日:2015/03/05 10:01:26