当前位置: 首页 > 编程语言 > C#

SOS不支持当前目标架构分享

时间:2023-04-10 22:49:28 C#

SOS不支持当前目标架构我正在尝试使用windbg来研究在x64机器上为我们的x86进程创建的挂起转储文件。这是一个4.0x86应用程序,所以只是为了获得一个非托管堆栈,我必须执行以下操作:标题中的错误。我错过了什么?我相信您必须使用位于C:\Windows\SysWOW64\taskmgr.exe中的32位任务管理器来获取32位转储。更多信息:http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on-an-x64-machine.aspx其他人已经说过,这可能是由64位应用程序(例如默认任务管理器)创建的32位进程的转储文件引起的。我能够使用GitHub上poizan42的soswow64WinDbg扩展来解决这个问题。我是通过这篇博文找到的,其中还提供了有关该问题的更多详细信息。我一直在遵循位匹配建议,但直到我看到这篇文章才知道确切原因:http://blogs.msdn.com/b/dotnet/archive/2013/05/01/net-crash-dump-and-live-process-inspection.aspx状态:“DAC有一个标准化接口,调试器使用该接口获取有关这些抽象状态的信息,例如托管堆。与CLR版本和架构相匹配的DAC进程或崩溃必须使用要检查的转储。”和“请注意,DAC是本机DLL,必须加载到使用ClrMD的程序中。如果转储或实时进程是32位,则必须使用32位版本的DAC,这反过来也意味着您的检查器程序需要是32位的。64位进程也是如此。确保程序的平台与您正在调试的程序相匹配。”还有一个选项对我有用:-我有一个64位进程的故障转储。-因此,首先,我需要从机器(C:\Windows\Microsoft.NETFramework64v4.0.30319)中转储SOS.dll和mscordacwks.dll。-基于两篇msdn文章(http://msdn.microsoft.com/en-gb/library/windows/hardware/ff562263%28v=vs.85%29.aspx,http://msdn.microsoft.com/en-gb/library/windows/hardware/ff540665%28v=vs.85%29.aspx),我像这样加载CLR:.cordll-u-ve-Iclr-lp在此之后,!线程工作。我认为这同样适用于32位故障转储。以上为C#学习教程:SOS不支持当前目标架构共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: