Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在GDB中运行以前的指令?_Linux_Debugging_Gdb - Fatal编程技术网

Linux 如何在GDB中运行以前的指令?

Linux 如何在GDB中运行以前的指令?,linux,debugging,gdb,Linux,Debugging,Gdb,这里我想问这个问题。当我调试一个程序时,有时我希望能再次运行上一条指令。就像在Microsoft Visual Studio中一样,我们可以将位置指示器(记住黄色箭头)拖动到要定位的上一条指令 例如: 我的程序目前在第72行,假设第70行的函数与第72行的函数相同。现在我想再次运行70号线。有办法吗 谢谢。您通常可以使用call命令调用gdb中的函数: 但是,如果您想具体返回程序,您总是可以找到相关行的内存位置,并设置指向该行的指令指针 (gdb) set $eip = <some mem

这里我想问这个问题。当我调试一个程序时,有时我希望能再次运行上一条指令。就像在Microsoft Visual Studio中一样,我们可以将位置指示器(记住黄色箭头)拖动到要定位的上一条指令

例如:

我的程序目前在第72行,假设第70行的函数与第72行的函数相同。现在我想再次运行70号线。有办法吗


谢谢。

您通常可以使用call命令调用gdb中的函数:

但是,如果您想具体返回程序,您总是可以找到相关行的内存位置,并设置指向该行的指令指针

(gdb) set $eip = <some memory address>
话虽如此,如果VisualStudio是这样做的,我不知道有什么方法可以完全解除程序的状态。换句话说,任何其他程序状态在第二次到第二次时都可能不同

我想重新运行70号线


使用GDB跳转。

使用GDB命令跳转,例如:

jump 70

您是否尝试过反向-*命令?请参阅“帮助运行”。可能重复感谢各位,我查看了它。这是否回答了您的问题?我认为VisualStudio不会完全释放这些变量。然而,我尝试了反向-*,这对我来说很好,除了目标记录。否则,目标子级的消息不支持此命令。被抛出。有没有办法提前设定目标记录?
jump 70