Ope*_*way 6 gdb reverse-debugging
我开始尝试使用gdb 7进行反向调试,按照教程:
http://www.sourceware.org/gdb/wiki/ProcessRecord/Tutorial
Run Code Online (Sandbox Code Playgroud)
我想,太好了!
然后我开始调试一个真正的程序,最后给出一个错误.所以我用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
Run Code Online (Sandbox Code Playgroud)
在我详细介绍之前,我想知道这个功能是否还有错误,或者我是否应该从头开始录制.
发生此"记录"错误的地方,只创建一个对象作为其他对象的副本.
从 GDB 7.11.1 开始不支持 AVX
也许这与以下提到的问题相同:
因为您的跟踪提到了 memcpy,它在 Ubuntu 16.04 中使用 AVX 指令,但如果没有最小的示例,很难确定。
rr是一个很棒的工作替代方案:https://github.com/mozilla/rr这是一个最小的工作示例:在函数返回的 GDB 中设置断点
听起来precord仍然有问题。
请确保您使用的是最新发布的 GDB 7.1,并提交错误。的输出x/i 0x2aaaab4c4b4e可能会有所帮助。GCC 和 libc.so.6 的确切分布和版本也是如此
| 归档时间: |
|
| 查看次数: |
2717 次 |
| 最近记录: |