在我加载了sosex之后,我得到了以下错误。有什么想法吗?挂起转储来自32位机器,我的是64位机器。我需要安装什么吗?
!clrstack
CLR DLL status: ERROR: Unable to load DLL mscordacwks_x86_x86_2.0.50727.3623.dll, Win32 error 0n2发布于 2011-10-04 05:39:07
问题是您机器上的mscordacwks版本与崩溃转储中的版本不同。这不是位的问题--即使你的机器是64位的,你也安装了32位的.NET。我的是在C:\Windows\Microsoft.NET\Framework\v2.0.50727.下
您拥有的副本不会有那么长的名称,它将被命名为mscordacwks.dll。当调试器发现您的“活动”副本不同时,它将搜索具有长名称的副本(避免dll地狱),这还会告诉您需要获取哪个版本。在我得到正确的mscordacwks.dll (例如从原始机器)后,我将其复制到我的框架目录中,并按照错误消息中显示的名称对其进行命名。我还设置了windbg的镜像路径,使其包含framework目录。
sos必须使用mscordacwks框架程序集来理解内存中的数据结构。这一切都在博客帖子“Failed to load data access DLL, 0x80004005” – OR – What is mscordacwks.dll? on the Notes from a dark corner博客中得到了解释。
你会发现互联网上到处都是关于如何获得不同版本的dll的问题。假设你不能从创建崩溃转储的机器上得到它,也不能从微软的符号服务器上下载它,那么我在过去所做的就是在microsoft.com中搜索mscordacwks和我需要的版本(例如2.0.50727.3623)。它通常在你可以下载的安全补丁中。
如果你没有合适的系统来安装它,我有幸用7zip打开了安装可执行文件。我在cab中找到了mscordacwks文件,该文件位于安全补丁安装可执行文件的补丁文件( MSP文件)中。每一个都可以用7zip打开。
当你访问CAB文件时,有时最好使用expand.exe,因为它可以解压缩文件7zip (v4.65)不能。如果你用7zip打开一个有_manifest_.cix.xml的CAB,使用expand代替,因为它使用清单来提取,解压缩和重命名内容。7zip (执行一个简单的提取到...)将其保留为原始文件,并以数字形式命名,字面意思为1、2等。这些文件仍可能被压缩。你知道的方法是,如果你打开它们(例如使用SciTE),它们将以PA30这样的签名开始(它将匹配清单中的源“类型”属性)。
https://stackoverflow.com/questions/7499537
复制相似问题