gdbの便利な使い方-コマンド
『実践デバッグ技法』を読んでたら、おもしろいことが書かれてあったので、メモしておく。
サンプルコード fibonacci.c
#include <stdio.h>
int fibonacci(int n);
int main(void)
{
printf("Fibonacci(3) is %d.\n", fibonacci());
return 0;
}
int fibonacci(int n)
{
if (n <= 1)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}
これをコンパイルして、gdbを起動。
$ gcc -g fibonacci.c
$ gdb a.out
ブレークポイントを設定する。
ここでは関数名を指定している。
(gdb) break fibonacci
Breakpoint 1 0x80483e0: file fibonacci.c, line 13.
ブレックポイント番号を指定してコマンドを実行できる。
(gdb) commands 1
Type commands for when breakpoint 1 is hit, one per line.
End with a line saying just "end".
>silent
>printf "fibonacci was passed %d.\n", n
>continue
>end
(gdb)
これを実行すると、次のようになる。
(gdb) run
Starting program: <path>/a.out
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
fibonacci was passed 3.
fibonacci was passed 2.
fibonacci was passed 1.
fibonacci was passed 0.
fibonacci was passed 1.
Fibonacci(3) is 3.
[Inferior 1 (process 8761) exited normally]
これは、次のように実行されたことを表している。

参考
『実践デバッグ技法』p84
Norman Matloff / Peter Salzman 著
相川 愛三 訳
オライリージャパン
2011年2月21日 初版第3刷
カテゴリー: C, memo
タグ: gdb, コマンド, デバッグ
カウント: 26