我有一个客户的崩溃转储文件,我必须分析。我是崩溃转储分析领域的新手。 (源代码是C ++)。
以下是我的尝试: -
我用MS Visual Studio打开了.dmp文件,表明存在以下错误 - 你无法调试32位进程的64位转储。所以,我想到了WinDbg
试一试。
当我在设置符号搜索路径后在WinDbg中打开文件时,我开始获取以下内容 - 调试对象未连接。
有人能指出我正确的方向吗?我应该要求客户从他的观点提供32位转储,还是可以调试此转储文件。
另外,请提供必要的文档以便开始使用。
答案 0 :(得分:2)
在某种程度上,您可以使用Windbg调试32位进程的64位转储, 通过使用wow64exts。但是,如果可能的话,我认为最好有32位转储。 如果客户可以提供32位转储,请获取它。
以下是wow64exts的示例:
0:008> k
Child-SP RetAddr Call Site
00000000`0291f128 00000000`779d263a wow64cpu!CpupSyscallStub+0x2
00000000`0291f130 00000000`7792c4f6 wow64cpu!WaitForMultipleObjects32+0x1d
00000000`0291f1e0 00000000`7792b8f5 wow64!RunCpuSimulation+0xa
00000000`0291f230 000007fe`e51fd6af wow64!Wow64LdrpInitialize+0x435
00000000`0291f770 000007fe`e519c1ae ntdll!_LdrpInitialize+0xde
00000000`0291f7e0 00000000`00000000 ntdll!LdrInitializeThunk+0xe
0:008> .load wow64exts
0:008> !sw
Switched to 32bit mode
0:008:x86> k
ChildEBP RetAddr
02a1f2dc 7783c752 ntdll_779e0000!NtWaitForMultipleObjects+0xc
02a1f460 75b956c0 KERNELBASE!WaitForMultipleObjectsEx+0x10b
02a1f4d4 75b9586a kernel32!WerpReportFaultInternal+0x1c4
02a1f4e8 75b67828 kernel32!WerpReportFault+0x6d
02a1f4f4 778c07c4 kernel32!BasepReportFault+0x19
答案 1 :(得分:2)