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

ブレークポイントの設定 [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


最終更新日:2013/10/24 00:31:31