我有一个非常老的程序,崩溃了。在调试使用WinDbg崩溃,我已经安装的验尸调试器,我注意到一个寄存器设置为一个奇怪的值:寄存器和调用参数的奇怪值
rdx=00000000
deadface
线程的堆栈跟踪导致崩溃(访问冲突)包含了一些可疑的价值,以及:
objc_1!objc_msg_lookup+0x29: 00000000 6784a4c5 488b4a38 mov rcx,qword ptr [rdx+38h] ds:00000000
dead
fb06=????????????????
我已从!analyze -v
命令的输出中包含的寄存器列表中获得第一个值。第二个是通过列出失败线程堆栈的命令产生的(~9k
)。
Windbg试图通过将这些值放入注册表和堆栈转储来告诉我一些事情,还是我只是一些旧的测试代码或恶作剧的受害者(或者它只是一个重要的值)?
程序是用obj-c编写的,运行的是旧版本的GNUstep和obj-c运行时。
有一个内存模式'deadbeef'代表'heapFree()'释放的内存' – 2014-09-26 13:30:40
谢谢,很好的提示。刚刚发现'deadface'是GNUstep用于类似目的的一种模式。 – 2014-09-26 14:32:29