在windbg中调试hang-dump问题 [英] Problem debugging hang-dump in windbg

查看:298
本文介绍了在windbg中调试hang-dump问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

加载sosex之后,我收到以下错误。有任何想法吗?挂机是从32位机,我的是64位。我需要安装什么吗?

 !clrstack 

CLR DLL状态:错误:无法加载DLL mscordacwks_x86_x86_2.0.50727.3623.dll,Win32错误0n2


解决方案

问题是您的机器上的mscordacwks的版本是与崩溃转储不同的版本。这不是一个问题 - 即使你的机器是64位,你有一个32位.NET安装。我的目录是C:\Windows\Microsoft.NET\Framework\v2.0.50727。



你的副本不会有那么长的名字只会被称为mscordacwks.dll。当调试器看到您的活动副本是不同的,它将搜索一个具有长名称(避免dll地狱),并且还告诉你需要获得什么版本。在我得到正确的mscordacwks.dll(例如从原始机器)后,我将其复制到我的框架目录中,并将其命名为错误消息中显示的内容。我还设置windbg的图像路径以包含框架目录。



sos必须使用mscordacwks框架程序集来了解内存数据结构。这一切都在博客文章无法加载数据访问DLL,0x80004005 - 或者 - 什么是mscordacwks.dll? / p>

你会发现有关如何获取该dll的各种版本的问题的互联网。假设您无法从创建崩溃转储的机器中获取该文件,并且不能从微软符号服务器下载,我以前做的是搜索microsoft.com for mscordacwks和我需要的版本(例如2.0.50727.3623)。它通常在一个可以下载的安全补丁中。



如果您没有适当的系统安装,我已经运气用7zip打开安装exe。我已经在一个cab中找到了mscordacwks文件,该文件夹位于安全修补程序安装可执行文件中的修补程序文件(MSP文件)中。每个都可以使用7zip打开。



当您打到CAB文件时,有时最好使用expand.exe,因为它可以解压缩文件7zip(v4.65)没有如果您使用具有 _manifest_.cix.xml 的7zip打开CAB,则使用expand替代,因为它使用清单来提取,解压缩并重命名内容。 7zip(做一个简单的解压缩到...)将其原始数据以数字形式命名,字面上为1,2等。这些文件可能仍然被压缩。你知道的方式是,如果你打开它们(例如使用SciTE),他们将从一个像PA30这样的签名开始(它将与清单中的源类型属性匹配)。


After I've loaded sosex, I'm getting the following error. Any ideas? The hang dump is from a 32 bit machine, mine is 64-bit. Do I need to install something?

!clrstack

CLR DLL status: ERROR: Unable to load DLL mscordacwks_x86_x86_2.0.50727.3623.dll, Win32 error 0n2

解决方案

The problem is the version of mscordacwks on your machine is a different version than the one from the crash dump. It's not a bitnesss issue - even though your machine is 64-bit, you have a 32-bit .NET installed. Mine is under C:\Windows\Microsoft.NET\Framework\v2.0.50727.

The copy you have won't have that long name, it'll just be called mscordacwks.dll. When the debugger sees your "active" copy is different, it'll search for one with the long name (avoiding dll hell) and that also tells you what version you need to get. After I get the correct mscordacwks.dll (eg from the original machine), I copy it into my framework directory and name it as it shows in the error message. I also set the image path of windbg to include the framework directory.

sos must use the mscordacwks framework assembly to understand the in memory data structures. This is all explained in the blog post "Failed to load data access DLL, 0x80004005" – OR – What is mscordacwks.dll? on the Notes from a dark corner blog.

You'll find the internet littered with questions about how to get various versions of that dll. Assuming you can't get the one from the machine that created the crash dump and it doesn't get downloaded from the microsoft symbol server, what I've done in the past is search microsoft.com for mscordacwks and the version I need (eg 2.0.50727.3623). It's usually in a security patch you can download.

If you don't have an appropriate system to install it on, I've had luck opening the install exe with 7zip. I've found the mscordacwks file in a cab that was in a patch file (an MSP file) that was in the security patch install executable. Each of those can be opened with 7zip.

When you hit a CAB file, sometimes it's better to use expand.exe as it can decompress files 7zip (v4.65) doesn't. If you open a CAB with 7zip that has an _manifest_.cix.xml, use expand instead as it uses the manifest to extract, decompress and rename the contents. 7zip (doing a simple extract to...) leaves it raw with bunches of files named numerically, literally 1, 2, etc. Those files may still be compressed. The way you know is if you open them (eg with SciTE),they'll start with a signature like PA30 (it will match the source "type" attribute from the manifest).

这篇关于在windbg中调试hang-dump问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆