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

vddsk6oq  于 2023-06-24  发布在  Windows
关注(0)|答案(2)|浏览(182)

问题

我有一个Windows应用程序,我们开发的内部使用。由于Windows错误处理,窗口保持打开,我可以轻松地从任务管理器生成崩溃转储。
我以前通过Eclipse在Linux上使用过crash-dumps,但这是第一次在Windows上使用。

硬件

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

Windbg

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

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

tv6aics1

tv6aics11#

看起来您的应用程序是一个32位应用程序,您使用64位Taskmgr生成转储。
你应该使用ProcessExplorerit cares about the bitness
Process Explorer v15.3:它还创建与目标进程位数匹配的转储文件
或者从C:\Windows\SysWOW64运行32位Taskmgr以生成转储。

yshpjwxd

yshpjwxd2#

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

更新this answer介绍如何使用soswow64修复位数问题。

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

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

请注意命令提示符是如何更改的。IMHO,完全相同的效果可以通过.effmach实现

0:014> .effmach x86
Effective machine: x86 compatible (x86)
0:014:x86>

除了明确指定!sw命令在两者之间切换的模式之外。
在.NET应用程序的情况下,这些都没有帮助我,因为SOS不能处理不正确位数的转储。

相关问题