Windows 故障转储调用堆栈仅显示 wow64

Windows Crash Dump call stack only shows wow64

问题

我有一个 Windows 应用程序,是我们为内部使用而开发的。感谢 Windows 错误处理,window 保持打开状态,我可以轻松地从任务管理器生成故障转储。

我以前通过 eclipse 在 linux 上使用过故障转储,但这是第一次在 Windows.

硬件

服务器是Windows2012,我的开发机是Windows7.

Windbg

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

我怎样才能具体查看我的应用程序调用堆栈?

看起来您的应用程序是 32 位应用程序,并且您使用 64 位 Taskmgr 生成了转储。

你应该使用 ProcessExplorer instead, it cares about the bitness:

Process Explorer v15.3: It also creates dump files that match the bitness of the target process

或 运行 来自 C:\Windows\SysWOW64 的 32 位 Taskmgr 生成转储。

, you have taken a 64 bit dump of a 32 bit application. There are 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 应用程序,none 这些对我有帮助,因为 SOS 无法处理不正确位数的转储。