1

我正在尝试读取 VS2010 中的转储文件,希望获得有关在我的发布版本中发生崩溃的位置的堆栈跟踪。但是,当我在 VS2010 中打开转储文件时,它指出

您无法调试 32 位进程的 64 位转储,您必须收集 32 位进程的 32 位转储

现在我的应用程序是 32 位的,它在 64 位系统上运行。那么这是否意味着我现在无法读取转储文件,因为它在 64 位系统上运行?有什么建议么 ?转储文件是使用 Windows 7 上的 64 位任务管理器生成的。如果我运行 32 位任务管理器并从 Windows 7 中生成转储文件,这会解决问题吗?

4

2 回答 2

5

您仍然可以使用 Windows 调试工具包中的 WinDbg 打开此转储。

要在 x64 系统中为 Win32 应用程序生成良好的转储,您需要使用 Win32 版本的MiniDumpWriteDumpAPI 创建转储。从 appbar 内容菜单或 Ctrl+Shift+Esc 热键(以及 Process Explorer)启动的常规任务管理器属于操作系统位数,生成的转储没有帮助。Visual Studio 本身可以获取 32 位转储,附加到进程,暂停它并从菜单中保存小型转储,或者使用 32 位任务管理器直接启动:C:\Windows\SYSWOW64\taskmgr.exe.

我正在使用LogProcessExceptions实用程序(我相信还有很多其他实用程序)来生成有关异常和交互式请求的小型转储。由于该实用程序可用于 Win32 和 x64位,因此该工具的 32 位版本将为您提供所需的转储。

于 2013-08-16T20:00:01.857 回答
1

是的,使用 32 位任务管理器创建 32 位进程的转储是可行的方法。

在 32 位进程上使用 64 位任务管理器会创建一个不太有用的 wow64 故障转储。

这是一个相关的 MSDN 博客:http: //blogs.msdn.com/b/amb/archive/2012/05/28/10163879.aspx

于 2013-08-17T16:02:04.417 回答