我最近收到来自客户的64位故障转储。
我们的流程都是32位的,但客户机运行的x64 Server 2008的调试在64位机器上捕获的32位进程的转储
的Visual Studio(2008年和2010速成)告诉我,我必须使用的MSVSMON.EXE
的64位版本,这我不能,因为我没有64位机器。
我很确定有一种方法可以在WinDbg中做到这一点,但我发现WinDbg是敌对的。
有什么办法在32位机器上调试64位转储,最好是使用Visual Studio?
我最近收到来自客户的64位故障转储。
我们的流程都是32位的,但客户机运行的x64 Server 2008的调试在64位机器上捕获的32位进程的转储
的Visual Studio(2008年和2010速成)告诉我,我必须使用的MSVSMON.EXE
的64位版本,这我不能,因为我没有64位机器。
我很确定有一种方法可以在WinDbg中做到这一点,但我发现WinDbg是敌对的。
有什么办法在32位机器上调试64位转储,最好是使用Visual Studio?
您需要确保客户使用32位工具(adplus或DebugDiag)来捕获32位进程的崩溃转储。然后你可以使用你的32位机器来调试转储。
虽然Isalamon的评论在技术上是正确,没有人愿意执行,由于堆栈跟踪是可怕的。
让你的客户知道这是必要的,并希望他/她合作。
如果你不熟悉转储分析,微软一直在你身边,http://support.microsoft.com
我使用ProcDump,如链接的博客文章中所述。即使在VS2010中使用托管代码,也可以发挥魅力。 – GregC 2011-08-16 22:01:05
是用户转储还是内核转储?它看起来像你有系统转储。如果是这种情况,那么你可以在windbg上获得!wow64exts扩展的帮助,并且可能导致问题的根源。
我已经使用切换到x86的模式下使用的建议得到了优异的成绩wow64exts.sw作为建议在这里!
http://blogs.msdn.com/b/ntdebugging/archive/2008/06/03/how-to-debug-wow64-applications.aspx
同样的忠告人物在这里:
和背景及相关命令在这里:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa384163(v=vs.85).aspx
希望这会成为体面的投入就这个话题除了什么在这个线程已经存在的汇编。谢谢。
我同意anwer你应该得到正确捕获的dmp文件,但最近做了一些这种类型的错误捕获的dmp文件的实验。我用WinDbg修补SOS.dll来删除拱形检查。我不是100%确定,如果我得到的是有效的,但至少有一些它似乎是这样... https://chentiangemalc.wordpress.com/2015/04/17/experimental-use-of-64-bit-dump-of-32-bit-net-process-in-windbg/
我通过使用32位任务管理器(C:\ Windows \ SysWOW64 \ Taskmgr.exe)来捕获转储。
这不再是一个问题[来自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