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

読み込みの監視(rwacth)

読み込みの監視 [rwacth]

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

$ gdb test
...

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

(gdb) break show
Breakpoint 1 at 0x40061c: file test.c, line 25.

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

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

Breakpoint 1, show (x=0x601028, n=3) at test.c:25
25          for (i = 0; i < n ; i++)
(gdb) delete 1

rwatch コマンドで変数 i の読み込みを監視する.

(gdb) rwatch i
Hardware read watchpoint 2: i

continue コマンドを4回使用する.変数 i を読み込む時に,プログラムが一時停止する.

(gdb) continue
Continuing.
Hardware read watchpoint 2: i

Value = 0
0x000000000040064f in show (x=0x601028, n=3) at test.c:25
25          for (i = 0; i < n ; i++)

(gdb) continue
Continuing.
Hardware read watchpoint 2: i

Value = 0
0x0000000000400628 in show (x=0x601028, n=3) at test.c:26
26              printf("%d\t", x[i]);

(gdb) continue
Continuing.
Hardware read watchpoint 2: i

Value = 1
0x000000000040064f in show (x=0x601028, n=3) at test.c:25
25          for (i = 0; i < n ; i++)

(gdb) continue
Continuing.
Hardware read watchpoint 2: i

Value = 1
0x0000000000400628 in show (x=0x601028, n=3) at test.c:26
26              printf("%d\t", x[i]);

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

(gdb) info watchpoints
Num     Type           Disp Enb Address            What
2       read watchpoint keep y                      i
        breakpoint already hit 4 times

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

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

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

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

Program exited with code 02.
(gdb) quit


最終更新日:2017/04/03 09:14:25