ソフトウェア設計及び演習2017
ブレークポイントの設定 [break, delete
ブレークポイントの設定 [break, delete]
先ほどと同様に,実行ファイルを引数として gdb を起動させる.
$ gdb test ...
次に,sort 関数を中心として、そのまわりの10行を表示する.
(gdb) list sort 4 void show(int x[], int n); 5 6 #define NUM 3 7 int x[] = {3, 2, 1}; 8 9 int sort(int x[], int n) { 10 int i, j, temp; 11 for (i = 0; i < n-1; i++) { 12 for (j = n-1; j > i; j--) { 13 if (x[j-1] > x[j]) {
sort 関数にブレークポイントを設定して,run コマンドでプログラムを実行する.
(gdb) break sort Breakpoint 1 at 0x400553: file test.c, line 11. (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++) {
今の行から5行目を中心として、そのまわりの10行を表示する.
(gdb) list +5 14 temp = x[j]; 15 x[j] = x[j-1]; 16 x[j-1]= temp; 17 } 18 } 19 show(x, NUM); 20 } 21 } 22 23 void show(int x[], int n) {
15行目にブレークポイントを設定して,continue コマンドで15行目に移動する.
(gdb) break 15 Breakpoint 2 at 0x4005a2: file test.c, line 15. (gdb) continue Continuing. Breakpoint 2, sort (x=0x601028, n=3) at test.c:15 15 x[j] = x[j-1];
print コマンドで交換するような配列 x の成分を調べる.
(gdb) print j $1 = 2 (gdb) print x[j] $2 = 1 (gdb) print x[j-1] $3 = 2
continue コマンドを使用して,次のブレークポイントまで実行する.
(gdb) continue Continuing. Breakpoint 1, sort (x=0x601028, n=3) at test.c:15 15 x[j] = x[j-1];
もう一回,print コマンドで交換するような配列 x の成分を調べる.
(gdb) print j $4 = 1 (gdb) print x[j] $5 = 1 (gdb) print x[j-1] $6 = 3
info breakpoints コマンドによって,設定されたすべてのブレークポイントを表示する.
(gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x0000000000400553 in sort at test.c:11 breakpoint already hit 1 time 2 breakpoint keep y 0x00000000004005a2 in sort at test.c:15 breakpoint already hit 1 time
delete コマンドで指定されたブレークポイントを削除する.(番号を指定しなければ,全てのブレークポイントを削除することができる.) もう一回,info breakpoints コマンドですべてのブレークポイントを表示する.
(gdb) delete 1 (gdb) delete 2 (gdb) info breakpoints No breakpoints or watchpoints.
continue コマンドを使用してプログラムの最後まで実行して,quit コマンドで gdb を終了させる.
(gdb) continue Continuing. 1 3 2 1 2 3 Program exited with code 02. (gdb) quit
最終更新日:2017/04/03 09:14:16