osdev-jpでは、OS開発に有用な情報を収集し公開しています
GDB を使って低レイヤプログラムをデバッグする際に便利なテクニックを集める。
break ... if <cond>
コマンドで条件付きブレークポイントを作れる。
あるいは condition
コマンドを使うと既存のブレークポイントに対し条件を付けられる。
スタックポインタのアライメントが 16 の倍数でない場合にブレークするには次のようにする。
condition <bnum> ((unsigned long)$rsp & 0xf) != 0
<bnum>
はブレークポイント番号。GDB において $rsp
は void*
型の扱いなので,整数にキャストしないとビット演算ができない。