私は GDB スクリプトを作成して、限定された方法で命令トレースを実行しようとしています (つまり、addr を開始して addr を停止します)。おそらく私はグーグルで失敗していますが、これがすでに存在しているとは思えません。
ここに私の刺し傷があります:
python
def start_logging():
gdb.execute("set logging on")
gdb.execute("while $eip != 0xBA10012E9")
gdb.execute("x/1i $eip")
gdb.execute("stepi")
gdb.execute(" end")
gdb.execute("set logging off")
gdb.execute("set pagination off")
gdb.execute("break *0xBA19912CF")
gdb.execute("command 1 $(start_logging())")
gdb.execute("continue")
私の考えでは、これはブレークポイントを設定し、コマンドがヒットしたときに実行するように設定する必要があります。ブレークポイントに到達すると、終了アドレスに到達するまでコードをシングル ステップで実行し、ログをオフにします。
これを gdb で実行すると、アプリケーションは正しい時点で中断しますが、コマンドは実行されません。
私は何を間違っていますか?これが間違った方法である場合は申し訳ありませんが、私に知らせてください。私はgdbスクリプトを初めて使用します