コアファイルの検死

gdb起動

$ gdb バイナリ コアファイル

スタックフレームの中身を拝見

(gdb) bt
(gdb) bt full  ←ローカル変数の値も表示

現在自分がいるスタックフレームを表示

(gdb) f

フレームの移動

(gdb) f 
(gdb) up   ←1つ上のフレームに移動
(gdb) down ←1つ下のフレームに移動

現在行の前後のソースコードを表示。
l(ist)で表示したい変数の名前を確認するといいだろう。

(gdb) l
(gdb) l val ←変数の宣言部のソースを見たい場合
(gdb) l func ←関数の定義部のソースを見たい場合

値を見る

(gdb) p val     ←現在のフレームのソースコード上にint型のvalがあるならこれで出る。
(gdb) p *pval    ←ポインタ変数の値表示。文字列を指していた場合は文字列が出力される。
(gdb) p &val   ←変数のアドレス表示
(gdb) x/s 0x0123456  ←アドレスを先頭として文字列表示
(gdb) printf "%sn", 0x0123456  ←アドレスを先頭として文字列表示
(gdb) p kozo ←構造体の全メンバ表示
(gdb) p kozo.data1 ←構造体の特定メンバ表示

pの詳しい使い方はこちら:http://tsstudio.s12.xrea.com/unix/gdb.html#core
変数の型表示

(gdb) whatis val
(gdb) ptype val  ←whatisとあまり変わらないが、クラス、構造体、UNION、ENUMだった場合、メンバも表示。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です