gdb反向调试失败,“进程记录不支持地址指令0xf0d”

时间:2010-03-27 10:35:18

标签: gdb reverse-debugging

我开始尝试使用gdb 7进行反向调试,请按照教程进行操作:

http://www.sourceware.org/gdb/wiki/ProcessRecord/Tutorial

我想,太棒了!

然后我开始调试一个真正的程序,最后给出一个错误。所以我用gdb运行它,并在我认为错误出现的地方之前放置一个断点。然后我键入“record”以开始记录操作以便将来进行反向调试。但经过一些步骤后,我得到了

Process record doesn't support instruction 0xf0d at address 0x2aaaab4c4b4e.
Process record: failed to record execution log.

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00002aaaab4c4b4e in memcpy () from /lib64/libc.so.6
(gdb) n
Single stepping until exit from function memcpy,
which has no line number information.
Process record doesn't support instruction 0xf0d at address 0x2aaaab4c4b4e.
Process record: failed to record execution log.

Program received signal SIGABRT, Aborted.
0x00002aaaab4c4b4e in memcpy () from /lib64/libc.so.6

在详细介绍之前,我想知道这个功能是否仍然存在问题,或者我是否应该从头开始录制。

如果发生此“记录”错误,只需将对象创建为其他对象的副本。

3 个答案:

答案 0 :(得分:1)

这是因为这个insn仍然不支持prec。

现在修好了。你可以试试gdb-cvs-head。

答案 1 :(得分:0)

precord之类的声音仍然存在问题。

请确保您使用的是最新发布的GDB 7.1,并提交错误消息。 x/i 0x2aaaab4c4b4e的输出可能会有所帮助。因此,GCC和libc.so.6的确切分布和版本

答案 2 :(得分:0)

自GDB 7.11.1起支持AVX

也许这与上面提到的问题相同:

因为你的跟踪提到了memcpy,它在Ubuntu 16.04中使用了AVX指令,但是如果没有最小的例子就很难确定。

rr是一个很棒的工作替代方案:https://github.com/mozilla/rr这是一个最小的工作示例:Setting breakpoint in GDB where the function returns