osdev-jpでは、OS開発に有用な情報を収集し公開しています

View My GitHub Profile

GDB デバッグ技法

GDB を使って低レイヤプログラムをデバッグする際に便利なテクニックを集める。

事例集

スタックポインタが 16 の倍数になっていない場合にブレーク

break ... if <cond> コマンドで条件付きブレークポイントを作れる。 あるいは condition コマンドを使うと既存のブレークポイントに対し条件を付けられる。 スタックポインタのアライメントが 16 の倍数でない場合にブレークするには次のようにする。

condition <bnum> ((unsigned long)$rsp & 0xf) != 0

<bnum> はブレークポイント番号。GDB において $rspvoid* 型の扱いなので,整数にキャストしないとビット演算ができない。