GDBでデバッグ

GDBを使ってデバッグをしてみる。
コマンド 概要
r (run) 実行
s (step) 1ステップ実行 (関数内に入る)
n (next) 1ステップ実行 (関数内に入らない)
c (continue) 次のブレークポイントまで実行
p (print) [変数/関数] 変数や関数の戻り値を表示
b (break) [行番号/関数名] ブレークポイントを作る
i (info) b (break) ブレークポイントの情報を表示
d (delete) [ブレークポイントID] 指定したID("i b"コマンドで見る)のブレークポイントを削除
set [var]=[val] 変数に値を代入
q (quit) デバッグを終了
generate-core-file コアファイルを作成

# g++ -g hello.cpp
# gdb a.out


(gdb) b main
(gdb) b 230
(gdb) r
(gdb) s
(gdb) n
(gdb) n
(gdb) c
(gdb) p myVar
$1 = 100
(gdb) set myVar=101
(gdb) p myVar
$1 = 101
(gdb) generate-core-file
Saved corefile core.3065
(gdb) q

コアファイルを参照

gdb a.out core.3065
(gdb) p myVar
(gdb) q

例: 長い文字列などを参照

(gdb) r
(gdb) n
(gdb) p pszHTML + 100
(gdb) p pszHTML + 200
(gdb) q

Reference: