GDB:如何获取执行历史

Posted

技术标签:

【中文标题】GDB:如何获取执行历史【英文标题】:GDB: How to get execution history 【发布时间】:2012-08-21 18:27:33 【问题描述】:

我对编译器领域很陌生。我正在使用 gcc,我想获取特定运行的程序的执行历史记录,即只有那些在上次运行中实际执行的语句。

gdb 可以吗?我无法在 gdb 中获得可以输出已执行语句的相关选项。 或者有没有其他获取执行历史的方法?

问候, 尼基尔。

【问题讨论】:

【参考方案1】:

Process Record 可能就是您要找的。该链接有一个快速教程和功能概述。

来自链接的 wiki 页面:

用 -g 编译这个程序,并将它加载到 gdb 中,然后执行 以下:

 (gdb) break main  
 (gdb) run  
 (gdb) record

这将打开进程记录,现在将记录被调试程序执行的所有后续指令。

请注意,您可以在任何时候开始过程记录(不仅仅是在 主要的)。您可以选择稍后启动,甚至更早启动。唯一的 限制是你的程序必须正在运行(所以你必须 在“记录”之前键入“运行”)。如果您想从 程序的第一条指令,你可以这样做:

 (gdb) break _start   
 (gdb) run   
 (gdb) record

希望这会有所帮助。

【讨论】:

【参考方案2】:

您可以使用set history save 命令开始记录历史记录。这可以写入~/.gdbinit 文件。 Look at the docs 了解更多信息。

【讨论】:

以上是关于GDB:如何获取执行历史的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django admin 中获取对象的历史记录?

GDB Python API:从地址获取符号名称

代码调试篇:如何编写 gdb 自定义命令

代码调试篇:如何编写 gdb 自定义命令

如何加载程序读取标准输入并在 gdb 中获取参数?

如何获取一个分支的提交历史?