Windows崩溃转储调用堆栈只显示wow64

问题

我有一个Windows应用程序,我们在室内使用开发。 感谢Windowserror handling,窗口保持打开,我可以轻松地从任务pipe理器生成崩溃转储。

我曾经在eclipse上通过eclipse在linux上使用过crash-dumps,但是这是Windows上的第一次。

硬件

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

WinDbg的

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

在这里输入图像说明

我怎样才能看到我的应用程序调用堆栈?

看起来你的应用程序是一个32位的应用程序,你使用64位Taskmgr生成一个转储。

你应该使用ProcessExplorer来代替, 它关心的是位数 :

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

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

正如已经回答的那样 ,你已经获得了一个32位应用程序的64位转储。 在64位操作系统上有32位转换的32位应用程序有多种选择 ,只需选择一个最适合您的应用程序。

如果这是唯一的转储,并且几乎没有机会获得更好的转储,那么可以尝试!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不能处理不正确位数的转储。