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

ソースコードの表示(list)

実行ファイルを引数として gdb を起動させる.

$ gdb test
...

main 関数にブレークポイントを設定して,run コマンドでプログラムを実行する.

(gdb) break main
Breakpoint 1 at 0x400664: file test.c, line 37.
(gdb) run
Starting program: /.../test

Breakpoint 1, main () at test.c:31
31          show(x, NUM);

next コマンドで show 関数を飛ばして,step コマンドで sort 関数の中に入る.

(gdb) next
3       2       1
32          sort(x, NUM);
(gdb) step
sort (x=0x601028, n=3) at test.c:11
11          for (i = 0; i < n-1; i++) {

ここで,list コマンドを実行すると,以下のように,合計10行(5行前から)の内容が表示される.

(gdb) list
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]) {
14                      temp = x[j];
15                      x[j] = x[j-1];

次に,20行目を中心として,そのまわりの10行を表示する.

(gdb) list 20
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) {
24          int i;

さらに,show 関数のはじまりを中心として,そのまわりの10行を表示する.

(gdb) list show
18              }
19              show(x, NUM);
20          }
21      }
22
23      void show(int x[], int n) {
24          int i;
25          for (i = 0; i < n ; i++)
26              printf("%d\t", x[i]);
27          printf("\n");

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

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

Program exited with code 02.
(gdb) quit


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