2015-09-07 56 views

回答

3

这是Reverse Debugging的另一个用例。

  1. 你应该在某个时候开始的过程进行记录和重放:

    (gdb) record 
    
  2. 当你想看到最后执行的行,你可以倒着走像 这样:

    (gdb) reverse-step 3 
    

    (gdb) reverse-next 3 
    
  3. 使用此答案https://stackoverflow.com/a/1545732/72178实际上 打印下N个执行的行。
+0

谢谢!那正是我需要的。奇迹般有效 –

1

你根本无法做到这一点(容易)在gdb,因为任何程序的执行轨迹是保留数据(以及保持这将是非常昂贵的:它会减慢了很多的执行,它会用很多资源 - 内存&磁盘空间)。

但是,您可以使用gdbbacktracebt命令显示call stack,那就是在当前功能当前指令指针,调用函数,调用函数的调用函数,等等

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