我正在使用 GDB 记录完整模式来记录程序中的一些流程。现在,完成此操作后,我想从使用 record save /tmp/gdb_record_log 命令保存的执行日志中提取指令历史记录。
我知道 gdb_record_log 文件是 elf 格式。但我仍然不明白如何从中提取指令日志。有人可以帮助我吗?
谢谢!
不确定这对您是否仍然有用,但以防将来有人偶然发现这一点:
记录保存旨在保存执行日志,加载到将来的 gdb 会话中,并允许您再次重播完全相同的执行。该日志实际上并不适合 GDB 以外的任何人阅读,因此您正在寻找的是 GDB 打印指令历史记录的某种方式,正如 Employed Russian 的评论所建议的那样。
有一个 bug 需要为
record instruction-history
[1] 添加 record full
支持,但我在子系统中还有更紧迫的问题需要解决,所以不幸的是,这正在等待决定实现它的人。
从 GDB 14 开始,您可以使用命令“maintenance print record-instruction [N]”来查看日志中的第 n 个指令,因此理论上您可以打印第 0 个、-1、 -2 等等来完全重建程序的流程,但这是一个极其次优的解决方案。