我有一个来自客户的故障转储文件,我必须对其进行分析。我是故障转储分析领域的新手。 (源代码是C++)。
这是我尝试过的:-
我用 MS Visual Studio 打开 .dmp 文件,它指示以下错误 - 您无法调试 32 位进程的 64 位转储。所以,我想给
WinDbg
一试。当我在设置符号搜索路径后在 WinDbg 中打开文件时,我开始获取以下信息 - Debuggee not connected。
谁能指出我正确的方向?我应该要求客户从他的角度提供 32 位转储,还是可以调试此转储文件。
此外,提供必要的文档以开始使用。
最佳答案
在某种程度上,您可以使用 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
关于c++ - 分析故障转储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779493/