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

変数内容の表示 [print, display

変数内容の表示 [print, display]

先ほどと同様に,実行ファイルを引数として 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

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++) {
(gdb) next
12              for (j = n-1; j > i; j--) {
(gdb) next
13                  if (x[j-1] > x[j]) {

print コマンドを使用して,変数の値を調べることができる.

(gdb) print i
$1 = 0
(gdb) print j
$2 = 2
(gdb) print x[j-1]
$3 = 2
(gdb) print x[j]
$4 = 1
(gdb) print *(int [3]*)x
$5 = {3, 2, 1}

ptype コマンドによって、変数の型を調査することができる.

(gdb) ptype x
type = int *

display コマンドを用いて,変数の変化を常に表示する. 例えば,next コマンドで一行ずつ実行する時に毎回,自動的に変数の内容を表示する.

(gdb) display j
1: j = 2
(gdb) next
14                      temp = x[j];
1: j = 2
(gdb) next
15                      x[j] = x[j-1];
1: j = 2
(gdb) next
16                      x[j-1]= temp;
1: j = 2
(gdb) next
12              for (j = n-1; j > i; j--) {
1: j = 2
(gdb) next
13                  if (x[j-1] > x[j]) {
1: j = 1

undisplay コマンドを用いて,変数の表示を消すことができる.

(gdb) undisplay 1
(gdb) next
14                      temp = x[j];

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

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

Program exited with code 02.
(gdb) quit


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