gdb コマンドメモ
gdbをファイルを指定して起動
$ gdb ./a.out
main関数の表示
(gdb) disas main
ブレイクポイントの設定(break)
(gdb) b *0x0804845e
ブレイクポイントの表示(info breakpoints)
(gdb) i b
ブレイクポイントの削除
(gdb) d 1
プログラムの実行(run)
(gdb) r
プログラムの再開(continue)
(gdb) c
プログラムを1行ずつ実行(step)
関数の中も1行ずつ実行する。ここで言う一行とは高等言語の1行と思われる。ライブラリ関数はデバック情報がないので関数を抜けるまで実行されるらしい。
(gdb) s
プログラムを1行ずつ実行(next)
関数は1行として実行する。ここで言う1行とは高等言語の1行と思われる。デバック情報がなければ最後まで実行されてしまうらしい。
(gdb) n
アセンブラを1行ずつ実行
(gdb) si
レジスタの値を表示
(gdb) i r
メモリの内容を表示
書式:x/[繰り返す数][表示単位][表示形式] [メモリ表示開始場所]
データの単位(ユニットサイズ)
b(1byte)
h(2byte)
w(4byte)
g(8byte)
表示形式
x(符号なし16進整数値)
d(符号付き10進整数値)
u(符号なし10進整数値)
o(符号なし8進整数値)
a(絶対アドレス、またはシンボルに定義された相対アドレス)
c(文字定数)
f(浮動小数点)
s(null-ターミネートされた文字列、指定されたユニットサイズは無視)
i(アセンブラ・シンタックスでの (もしくは、それに近い) マシン・ インストラクション、指定されたユニットサイズは無視、 1つのインストラクションを構成するバイト数はそのマシンで利用されているオペコードとアドレッシングモードの種類に依存)
(gdb) x/32hs 0xffffcfb8-0x80