在VS2010 64/32位冲突中读取转储文件



我正试图在VS2010中读取一个转储文件,希望在我的发布版本中获得崩溃发生位置的堆栈跟踪。然而,当我在VS2010中打开转储文件时,它显示

不能调试32位进程的64位转储,必须收集32进程的32位转储

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

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

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

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

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

在32位进程上使用64位任务管理器会创建一个wow64崩溃转储,这并不是很有用。

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