set step-mode on
としてステップ実行しようとしても
正しくステップ実行できない場合がある.
たとえば何らかの原因でmain
関数が呼び出される前にプログラムが異常終了しているというような問題を調査する場合に,
このテクニックが必要になる場合がある.
[たとえば,“set step-mode on
”としてステップ実行モードにしてから“run
”しているのに,
いきなり例外が飛んでプログラムが終了してしまいデバッグできないとか,
“break main
”としてmain
に入った直後でとめようとしているのに,
とまらずに異常終了してしまうというようなケースで使うテクニック.
このような場合,当然ながら命令レベルのデバッグになる.]
(1) |
info files としてプログラムのエントリーポイント(Entry point)のアドレスを調べる.
エントリーポイントのアドレスが例えば0x8048ee8 の場合…
|
(2) | break *0x8048ee8 のようにアドレスを指定してブレイクポイントを設定する. |
(3) | run |
これでC言語のスタートアップルーチンの最初の関数_start
の開始地点でプログラムをブレイクすることができる.
あとは“stepi
”で1命令ずつ実行しながら
どこでおかしくなっているか調べればよい.