Linux 如何在GDB中运行以前的指令?
这里我想问这个问题。当我调试一个程序时,有时我希望能再次运行上一条指令。就像在Microsoft Visual Studio中一样,我们可以将位置指示器(记住黄色箭头)拖动到要定位的上一条指令 例如: 我的程序目前在第72行,假设第70行的函数与第72行的函数相同。现在我想再次运行70号线。有办法吗Linux 如何在GDB中运行以前的指令?,linux,debugging,gdb,Linux,Debugging,Gdb,这里我想问这个问题。当我调试一个程序时,有时我希望能再次运行上一条指令。就像在Microsoft Visual Studio中一样,我们可以将位置指示器(记住黄色箭头)拖动到要定位的上一条指令 例如: 我的程序目前在第72行,假设第70行的函数与第72行的函数相同。现在我想再次运行70号线。有办法吗 谢谢。您通常可以使用call命令调用gdb中的函数: 但是,如果您想具体返回程序,您总是可以找到相关行的内存位置,并设置指向该行的指令指针 (gdb) set $eip = <some mem
谢谢。您通常可以使用call命令调用gdb中的函数: 但是,如果您想具体返回程序,您总是可以找到相关行的内存位置,并设置指向该行的指令指针
(gdb) set $eip = <some memory address>
话虽如此,如果VisualStudio是这样做的,我不知道有什么方法可以完全解除程序的状态。换句话说,任何其他程序状态在第二次到第二次时都可能不同
我想重新运行70号线
使用GDB跳转。使用GDB命令跳转,例如:
jump 70
您是否尝试过反向-*命令?请参阅“帮助运行”。可能重复感谢各位,我查看了它。这是否回答了您的问题?我认为VisualStudio不会完全释放这些变量。然而,我尝试了反向-*,这对我来说很好,除了目标记录。否则,目标子级的消息不支持此命令。被抛出。有没有办法提前设定目标记录?
jump 70