GDBのコマンド
GDBの動かし方について。
オンラインで試せるGDBがあったので遊び倒して見た。
GDB online Debugger | Compiler - Code, Compile, Run, Debug online C, C++
よく使う(使った)コマンドなどをまとめた。
シンボルファイル関連は後日やりたい。
コマンド | 省略形 | 意味 |
---|---|---|
set disassembly-flavor intel |
- | アセンブラの表示をintelのものにできる |
list [<行数>|<関数名>] |
l |
関数または行数から10行周辺のソースを表示 |
break [<行数>|<関数名>] |
b |
関数、または行数の位置にブレークポイントを置く |
clear [<行数>|<関数名>] |
関数、または行数の位置のブレークポイントを削除する | |
dlete bnums ... |
指定されたブレークポイント番号のブレークポイントを削除する | |
step |
s |
シンボルファイルで紐付いたプログラムを1行実行(関数の中に入る) |
stepi |
si |
単一の機械語を一命令実行 |
next |
n |
シンボルファイルで紐付いたプログラムを1行実行(関数は中に入らない) |
nexti |
ni |
単一の機械語を一命令実行、サブルーチンはリターンするまで実行する |
backtrace |
bt |
関数の呼び出しトレースを表示 |
print <変数名> |
p |
変数の内容を表示。& をつけてアドレスを表示したり* を付けて値参照したりできる。 |
メモリダンプのコマンド
x/<量><単位><表示形式> <アドレス>
起動時に -ex <ファイルまたは''囲いのコマンド>
オプションをつける事で起動時にgdbにコマンドを実行させられる。
自分の場合はqemuで1234ポートでgdbサーバーを起動した後、クライアント側のgdbはgdb -ex 'target remote localhost:1234'
とコマンドを打つ事ですぐさまデバッグが始められる。*1
他メモ
見やすいGDBのUI。良さそう
.gdbinitの設定方法
gdbで初期設定をAT&T記法からIntel記法に変更する方法 | サラリーマンがハッカーを真剣に目指す
*1:もちろん起動時に行いたい長ったらしい処理をファイル外だしにして引数に与えることも可能