2010-10-22 68 views
14

我最近收到来自客户的64位故障转储。
我们的流程都是32位的,但客户机运行的x64 Server 2008的调试在64位机器上捕获的32位进程的转储

的Visual Studio(2008年和2010速成)告诉我,我必须使用的MSVSMON.EXE的64位版本,这我不能,因为我没有64位机器。

我很确定有一种方法可以在WinDbg中做到这一点,但我发现WinDbg是敌对的。

有什么办法在32位机器上调试64位转储,最好是使用Visual Studio?

+1

这不再是一个问题[来自VS 2013](http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/opening-64-bit-dumps-of-32-bit -processes-in-visual-studio-2013.aspx)。 – 2015-10-05 21:30:15

回答

10

您需要确保客户使用32位工具(adplus或DebugDiag)来捕获32位进程的崩溃转储。然后你可以使用你的32位机器来调试转储。

http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on-an-x64-machine.aspx

虽然Isalamon的评论在技术上是正确,没有人愿意执行,由于堆栈跟踪是可怕的。

让你的客户知道这是必要的,并希望他/她合作。

如果你不熟悉转储分析,微软一直在你身边,http://support.microsoft.com

+2

我使用ProcDump,如链接的博客文章中所述。即使在VS2010中使用托管代码,也可以发挥魅力。 – GregC 2011-08-16 22:01:05

1

是用户转储还是内核转储?它看起来像你有系统转储。如果是这种情况,那么你可以在windbg上获得!wow64exts扩展的帮助,并且可能导致问题的根源。

1

我已经使用切换到x86的模式下使用的建议得到了优异的成绩wow64exts.sw作为建议在这里!

http://blogs.msdn.com/b/ntdebugging/archive/2008/06/03/how-to-debug-wow64-applications.aspx

同样的忠告人物在这里:

http://blogs.msdn.com/b/msdnforum/archive/2010/03/14/how-do-i-switch-to-32bit-mode-when-i-use-windbg-to-debug-a-dump-of-a-32bit-application-running-on-an-x64-machine.aspx

和背景及相关命令在这里:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384163(v=vs.85).aspx

希望这会成为体面的投入就这个话题除了什么在这个线程已经存在的汇编。谢谢。

1

我通过使用32位任务管理器(C:\ Windows \ SysWOW64 \ Taskmgr.exe)来捕获转储。

相关问题