c++ - 分析故障转储文件

标签 c++ visual-studio-2010 windbg dump crash-dumps

我有一个来自客户的故障转储文件,我必须对其进行分析。我是故障转储分析领域的新手。 (源代码是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/

相关文章:

Android NDK 应用程序 - 集成文本文件进行部署的最佳方式

c++ - 如何使用 Qt 的 native OpenGL 获取我的总 GPU 内存?

sql-server - 我们如何为连接字符串.config 中使用的 Sql Server 实例名称添加别名?

visual-studio-2010 - 如何从 Silverlight 写入 Visual Studio 2010 调试输出窗口?

windows - 内核跟踪 Windows 7 WinDbg

c++ - 派生 QT 类的复制构造函数

c++ - 导航到 vim 中当前 html 标记的末尾?

c - 为什么 C 代码可以在 Win32 构建时工作,但在 x64 构建时失败?

windows - 打印 windows coredump 的堆栈跟踪,无需以交互方式进入 windbg/visual studio

.net - 用于调试和发布构建的 WinDbg 不同堆栈跟踪