Windbg.exe:无法加载数据访问DLL,0x80004005

发布于 2024-12-06 02:17:00 字数 1603 浏览 0 评论 0 原文

我正在尝试从 x64 计算机上运行的进程调试 32 位进程转储。我在 x64 笔记本电脑上运行 x86 版本的 Windbg。我已遵循建议这里,但我仍然得到这个:

0:000> .cordll -ve -u -l
CLR DLL status: No load attempts
0:000> !clrstack
CLRDLL: C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll:4.0.30319.17020 f:8
doesn't match desired version 4.0.30319.237 f:8
CLRDLL: Loaded DLL c:\symbols\public\mscordacwks_x86_x86_4.0.30319.237.dll\4DD234A8670000\mscordacwks_x86_x86_4.0.30319.237.dll
Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of clr.dll is 
                in the version directory
            3) or, if you are debugging a dump file, verify that the file 
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
            4) you are debugging on the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                machine.

You can also run the debugger command .cordll to control the debugger's
load of mscordacwks.dll.  .cordll -ve -u -l will do a verbose reload.
If that succeeds, the SOS command should work on retry.

If you are debugging a minidump, you need to make sure that your executable
path is pointing to clr.dll as well.

据我所知, mscordacwks_x86_x86_4.0.30319.237.dll 已成功加载,但我仍然收到错误。我缺少什么?

I'm trying to debug a 32 bit process dump from a process that ran on an x64 machine. I'm running an x86 version of windbg on my x64 laptop. I've followed the recommendations here, but I'm still getting this:

0:000> .cordll -ve -u -l
CLR DLL status: No load attempts
0:000> !clrstack
CLRDLL: C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll:4.0.30319.17020 f:8
doesn't match desired version 4.0.30319.237 f:8
CLRDLL: Loaded DLL c:\symbols\public\mscordacwks_x86_x86_4.0.30319.237.dll\4DD234A8670000\mscordacwks_x86_x86_4.0.30319.237.dll
Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of clr.dll is 
                in the version directory
            3) or, if you are debugging a dump file, verify that the file 
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
            4) you are debugging on the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                machine.

You can also run the debugger command .cordll to control the debugger's
load of mscordacwks.dll.  .cordll -ve -u -l will do a verbose reload.
If that succeeds, the SOS command should work on retry.

If you are debugging a minidump, you need to make sure that your executable
path is pointing to clr.dll as well.

As far as I can determine, mscordacwks_x86_x86_4.0.30319.237.dll is successfully loaded, but I still get the error. What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一绘本一梦想 2024-12-13 02:17:00

我通过使用 ProcDump 获取 32 位进程的 32 位转储解决了该问题那是在 64 位机器上运行的。我可以使用 32 位 Windbg 成功地检查这一点。有更多详细信息 此博文

I resolved the issue by using ProcDump to get 32bit dump of the 32bit process that was running on a 64bit machine. I can successfully examine that using 32bit windbg. There are more details in this blog post.

压抑⊿情绪 2024-12-13 02:17:00

看起来您有一个 32 位转储文件 - 否则错误将类似于

CLR DLL status: ERROR: Unable to load DLL mscordacwks_AMD64_x86_2.0.50727.3053.dll, Win32 error 0n87

至少是这样到博客文章 “无法加载数据访问 DLL,0x80004005” – 或 – 什么是mscordacwks.dll? 位于“黑暗角落笔记”博客上。

请注意错误消息中 AMD64_x86 与 x86_x86 的混合。

对我来说,这总是因为我没有正确版本的 mscordacwks。也有可能windbg找不到它。请参阅我对问题调试hang-dump in Windbg的回答我用来从安全补丁中查找/提取正确版本的一种方法。为了让 Windbg 加载它,我将 Windbg 的图像路径设置为指向我存储它的目录。

It looks like you have a 32-bit dump file - otherwise the error would look like

CLR DLL status: ERROR: Unable to load DLL mscordacwks_AMD64_x86_2.0.50727.3053.dll, Win32 error 0n87

At least that's according to the blog post “Failed to load data access DLL, 0x80004005” – OR – What is mscordacwks.dll? on the Notes from a dark corner blog.

Note the mix of AMD64_x86 vs the x86_x86 in your error message.

For me, it's always because I don't have the correct version of mscordacwks. It's also possible windbg can't find it. See my answer to Problem debugging hang-dump in windbg for one method I've used to find/extract the correct version from security patches. To get windbg to load it, I set set the image path for windbg to point to the directory I've stored it in.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文