命令レベルのステップ実行が正しく動作しないときの対処方法

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命令ずつ実行しながら どこでおかしくなっているか調べればよい.


はたいたかし
http://exlight.net/
2005-09-22
Home > 開発ツール > Debugger > gdb