[ ホーム | お知らせ | ソフトウェア | 覚え書き | メール | ->英語 ] |
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 | 表示する単位 |
x | 16進数 |
d | 10進数 |
d | 10進数 |
b | 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 |