显示最近执行的n行



有时在GDB中,我想看到使程序达到现在位置的控制流。简单地说,我如何让GDB打印最后执行的x行?

这是反向调试的另一个用例。

  1. 你应该在某个点开始过程记录和回放:

    (gdb) record
    
  2. 当您想要查看最后执行的行时,您可以像这样向后移动:

    (gdb) reverse-step 3
    

    (gdb) reverse-next 3
    
  3. 用这个答案https://stackoverflow.com/a/1545732/72178来实际输出下一个N行。

gdb中你根本不能(很容易地)做到这一点,因为任何程序的执行跟踪都是不保留的(保留它会非常昂贵:它会减慢执行速度,并且会使用大量资源-内存&磁盘空间).

您可以使用gdbbacktracebt命令来显示调用堆栈,即当前函数、调用函数、调用函数的调用函数中的当前指令指针,等等

顺便说一句,如果你真的想要它,你可以使用Python或Guile编写最近的gdb脚本来给你这样的信息。您当然可以保留整个跟踪(通过围绕step &backtrace功能)。

相关内容

最新更新