[ ホーム | お知らせ | ソフトウェア | 覚え書き | メール | ->英語 ]

gdb

[ スタック 表示 実行 停止 実行コード ]

 

gdbはプログラムの動作を確認するためのツールです。一般にはデバッガと呼ばれます。


gdbを使う前に

デバッガ上でソースファイルの内容を表示する場合はコンパイル時にオプションを追加して実行ファイルを作成します。

例えばつぎのようにします。

$ gcc sample.c -g -o sample
デバッガを利用する場合は必ず"-g"オプションを追加してコンパイルするようにしてください。

基本的な使い方

$ gdb 実行ファイル名    ... デバッガを起動
(gdb) b main           ... main()関数の最初にブレークポイントを設定
(gdb) run              ... 実行開始、main()関数の最初で処理が中断
(gdb) n                ... ブレークポイントの行を実行
(gdb) n                ... さらに次の行を実行
(gdb) p xyz            ... 変数xyzの内容を表示
(gbd) c		           ... 続きを実行
(gdb) q                ... デバッガの終了
この要領で自分が作成したプログラムを1行づつ実行してください。

n と s をうまく使い分けて、 ブレークポイントを設定したり消したりしながら 実行すれば、自分が見たい場所だけを効率よく ステップ実行できるようになります。

 


よく使うコマンドの実行例

file ファイル名 実行ファイルを読み込む
run 引数 ... (引数を指定して)実行
b 321 現在注目してくるファイルの321行にブレークポイントを設定
b abc.c:123 abc.cの123行にブレークポイントを設定
b hoge 関数hogeの先頭にブレークポイントを設定
l ソースを10行ずつ順番に表示
l 456 456行からソースを表示
p xyz 変数xyzの内容を表示
p aaa@3 配列aaaの要素3を表示
s 1行を実行(関数の中も追跡する)
n 1行を実行(関数の中は追跡しない)
display xyz 停止するたびに変数 xyzの内容を表示
delete ブレークポイントの削除

 


メモリの内容を表示

書式

x/{CNT}{FMT}{SIZ}
CNT 表示する回数
FMT

表示する形式

 

SIZ 表示する単位

表示する形式

16進数
10進数
10進数
2進数
c 文字
s 文字列
f 実数(float)
a アドレス(addres)
i 実行コード(instruction)

表示する単位

b 1バイト(byte)
h 2バイト(half word)
w 4バイト(word)
g 8バイト(giant)

実行例

(gdb) x/10xb	10バイトを16進数で表示

スタックに関するコマンド

スタックを表示 info stack
スタックを表示 backtrace
スタックを表示 where
スタックを上へ移動 up
スタックを下へ移動 dowon
指定したスタックに移動 frame 番号

[ スタック 表示 実行 停止 実行コード ]

 


表示に関するコマンド

関数の引数を表示 info args
関数のローカル変数を表示 info locals
メモリの内容を表示 x/書式 アドレス
式の値を表示 print 式
式の値を常に表示 display 式
displayを解除 undisplay 番号
データ型を表示 watis 式
データ型の詳細(構成など)を表示 ptype 式/データ型
ソースコードを表示 list 関数名/ファイル名/行番号
ファイルから文字列を検索 search 文字列
ファイルから文字列を検索 reverse search 文字列

[ スタック 表示 実行 停止 実行コード ]

 


実行に関するコマンド

式を実行 call 式
変数に値を代入 set 変数名=値
プログラムを実行 run 引数... < ファイル名 > ファイル名
プログラムを終了 kill
プログラムを再開 continue
つぎの命令を実行(ステップイン) step 実行する行数
つぎの命令を実行(ステップオーバー) next 実行する行数
現在の行を越えるまで実行 until
関数の最後まで実行 finish
関数を中断してひとつ上に戻る return 式
指定したプロセスをデバッグする attach プロセスID

[ スタック 表示 実行 停止 実行コード ]

 


停止に関するコマンド

ブレークポイント、ウォッチポイントを表示 info break
ブレークポイント、ウォッチポイントを表示 info watch
ブレークポイントを設定 b 行番号
ブレークポイントを設定 b ファイル名:行番号
ブレークポイントを設定 b 関数
ブレークポイントを設定 b [クラス名 メソッド]
式の値が変化したら停止 watch 式
変数に値が代入されたら停止 awatch 変数名
式が真なら停止 condition 番号 式
設定した条件を取り消す contidion 番号
指定した回数だけ停止を無視する igonore 番号 停止を無視する(通過する)回数
停止した時に実行するコマンドを設定 command 番号
ブレークポイントを削除 delete 番号
ブレークポイントを有効にする enable 番号
ブレークポイントを無効にする disable 番号
すべてのブレークポイント、ウォッチポイントを削除 delete

[ スタック 表示 実行 停止 実行コード ]

 


実行コードに関するコマンド

レジスタの内容を表示 info register
実行コードをアセンブラで表示 disassemble 関数/アドレス
実行コードをアセンブラでつねに表示 display/i $pc
つぎの実行コードを実行(ステップイン) si
つぎの実行コードを実行(ステップオーバー) ni

[ スタック 表示 実行 停止 実行コード ]

 


[ ホーム | お知らせ | ソフトウェア | 覚え書き | メール | ->英語 ]

空色そふと

eXTReMe Tracker