我想知道是否有可能创建一个脚本,该脚本将根据内存地址值逐步继续执行程序(中断后)。 所以,如果我正在跟踪一个函数并且它进入一个高内存值,我会调用gdb脚本,直到内存值低于设定值 - 然后它会再次中断。
我对gdb很新,还在阅读手册/教程,但我想知道我的目标是否可行:) - 如果你能让我找到正确的方向,那就更好了;)
谢谢!
编辑,使用伪代码更新:
while (1) {
cma = getMemoryAddressForCurrentInstruction();
if (cma > 0xdeadbeef) {
stepi;
} else {
break;
}
}
答案 0 :(得分:1)
你在谈论Program Counter(有时称为指令指针)。它在gdb中以$pc
的形式提供。您的伪代码可以转换为这个实际的gdb命令:
while $pc <= 0xdeadbeef
stepi
它会很慢,因为它为每条指令启动和停止程序,但据我所知,如果你不确切知道你正在寻找什么地址,那么就没有快速的方法。如果你这样做,那么你可以在那里设置一个断点:
break *0xf0abcdef
cont
将一直运行,直到程序计数器达到0xf0abcdef