FrontPage > C/C++ > C言語 > デバッガ > GDB
gcc等のデバッグ用のコマンド
# 最適化オプション"-O"は、"-g"と相反するので無効化されるので注意。
# "-g3" or "-ggdb3"を設定すると、デバッグ時にGDB内でマクロが使える。
実行例 $ file core ←対象のモジュール実行名等を確認 $ gdb [実行モジュール [coreファイル]] (gdb) bt full (gdb) q
<<COREファイル表示>> $ gdb --core=coreファイル
(gdb) r (gdb) run 「r [起動引数...]」とすると起動引数を設定して実行可能。
^C
(gdb) l [行番号] (gdb) list [行番号] 「l [ファイル名:行番号]」、「l [関数名]」等も可能。 ※コンパイル時のソースファイルが参照可能であること。
(gdb) b [行番号] (gdb) breakpoint [行番号] 「b [ファイル名:行番号]」、「b [関数名]」等可能。
(gdb) watch iLoop==10 「iLoop」が10になると実行停止。
(gdb) clear [行番号]
(gdb) info breakpoints
(gdb) disable [ブレークポイント番号]
(gdb) enable [ブレークポイント番号]
(gdb) enable delete [ブレークポイント番号]
(gdb) s (gdb) step
(gdb) si (gdb) stepi
(gdb) n (gdb) next
(gdb) ni (gdb) nexti
(gdb) f (gdb) finish
(gdb) c (gdb) continue
(gdb) u (gdb) until
(gdb) p [変数名] (gdb) print [変数名]
(gdb) x [変数名]
(gdb) x/10i [関数名]
(gdb) set [変数名]=[値] (gdb) set var [変数名]=[値] (gdb) set variable [変数名]=[値]
(gdb) q (gdb) quit
(gdb) bt (gdb) backtrace
(gdb) up
(gdb) down
(gdb) info types
(gdb) info sources
(gdb) info functions
(gdb) info variables
#include <stdio.h> typedef struct _test { int a; char b[5]; int c; } test; int main(int atgc, char **argv) { test t1[2]; memset (&t1, 0x00, sizeof(t1)); t1[0].a= 2; t1[1].c= 5; /* GDB チェック・ポイント */ printf ("t1 : %d\n", t1[1].c); // dammy return (0); }
(gdb) show print array Prettyprinting of arrays is off. (gdb) show print pretty Prettyprinting of structures is off. (gdb) show print elements Limit on string chars or array elements to print is 200.
(gdb) p t1 $1 = {{a = 2, b = "\000\000\000\000", c = 0}, {a = 0, b = "\000\000\000\000", c = 5}}
(gdb) set print array on (gdb) set print pretty off (gdb) p t1 $2 = {{a = 2, b = "\000\000\000\000", c = 0}, {a = 0, b = "\000\000\000\000", c = 5}}
(gdb) set print array off (gdb) set print pretty on (gdb) p t1 $3 = {{ a = 2, b = "\000\000\000\000", c = 0 }, { a = 0, b = "\000\000\000\000", c = 5 }}