我正在尝试编写一个 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 脚本的新手