Windows Crash Dump调用堆栈仅显示wow64

时间:2015-08-07 23:53:57

标签: windows windbg coredump crash-dumps

问题

我有一个Windows应用程序,我们开发用于室内使用。由于Windows错误处理,窗口保持打开状态,我可以轻松地从任务管理器生成故障转储。

之前我曾经通过eclipse在linux上使用了崩溃转储,但这是Windows上的第一次。

硬件

服务器是Windows 2012,我的开发机器是Windows 7。

WinDBG的

当我在Windbg中加载崩溃转储时,加载我的符号,然后选择查看调用堆栈,唯一的列表是:

enter image description here

如何具体查看我的应用程序调用堆栈?

2 个答案:

答案 0 :(得分:8)

您的应用程序看起来像是一个32位应用程序而您使用64位任务管理器来生成转储。

您应该使用ProcessExplorer代替it cares about the bitness

  

Process Explorer v15.3:它还会创建与之匹配的转储文件   目标过程的位数

或者从C:\Windows\SysWOW64运行32Bit Taskmgr以生成转储。

答案 1 :(得分:4)

作为already answered,您已经对32位应用程序进行了64位转储。有multiple options to take a 32 bit dump of a 32 bit application on 64 bit OS,只需选择最适合您的那个。

如果这是您唯一的转储并且几乎没有机会获得更好的转储,您可以尝试!sw切换到32位模式:

0:014> !sw
Switched to 32bit mode
0:014:x86>

请注意命令提示符的更改方式。恕我直言,.effmach

可以实现完全相同的效果
0:014> .effmach x86
Effective machine: x86 compatible (x86)
0:014:x86>

除了您明确指定模式,!sw命令在两者之间切换。

对于.NET应用程序,这些都没有帮助过我,因为SOS无法处理不正确的转储。