gdb反向调试失败,出现“错误”;过程记录不支持地址“处的指令0xf0d”;

gdb反向调试失败,出现“错误”;过程记录不支持地址“处的指令0xf0d”;,gdb,reverse-debugging,Gdb,Reverse Debugging,我开始尝试使用gdb 7进行反向调试,如下所示: http://www.sourceware.org/gdb/wiki/ProcessRecord/Tutorial 我想,太棒了 然后我开始调试一个真正的程序,它在最后给出了一个错误。因此,我使用gdb运行它,并在我认为错误出现的位置之前放置了一个断点。然后我键入“record”以开始重新创建操作,以便将来进行反向调试。但经过一些步骤后,我得到了 Process record doesn't support instruction 0xf0d

我开始尝试使用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
在详细介绍之前,我想知道这个特性是否仍然存在缺陷,或者是否应该从头开始录制


如果发生此“记录”错误,则只创建一个对象作为另一个对象的副本。

听起来像是
precord
仍然存在缺陷


请确保您使用的是最新发布的GDB7.1,并提交一个bug。
x/i 0x2aaab4c4b4e
的输出可能会有所帮助。GCC和libc.So.6的准确发行版和版本也将如此。这是因为prec仍然不支持此insn


现在修好了。您可以尝试gdb cvs头。

从gdb 7.11.1开始不支持AVX

可能这与以下内容中提到的问题相同:

因为你的跟踪提到了memcpy,它在ubuntu16.04中使用AVX指令,但是没有一个简单的例子就很难确定


rr
是一个非常好的工作选择:这里有一个最简单的工作示例:

真的很感谢,我希望不会再次出错,并享受无休止的反向调试。请参阅解决方案和PR。