module - Windbg中设置CLR模块的镜像路径

标签 module clr windbg

当我在Win7 64位机器上运行64位版本的Windbg时,它显示clr.dll模块的图像路径是32位版本的框架,而不是 64 位。

有没有办法在Windbg中指定clr.dll模块的图像路径?在 64 位机器上运行的 Windbg 64 位是否应该从 Framework64 目录中获取 clr.dll?

0:000> lmvm clr
...
    Loaded symbol image file: clr.dll
    Image path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll

我有一个 64 位 w3wp.exe 转储,无法在其上使用 SOS,我相信这是因为该 32 位 clr dll 镜像导致的框架不兼容。

0:000> .loadby sos clr
The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos) failed, Win32 error 0n193
    "%1 is not a valid Win32 application."

再一次,转储来自 64 位服务器,我仔细检查了它是否与我正在调试的 Win7 64 位计算机具有相同的 CLR 版本,并且我正在运行 64 位 Windbg。

Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
...
Windows 7 Version 7600 MP (4 procs) Free x64

当我运行 32 位 Windbg 时,它可以正常加载 SOS,但当我尝试运行 !threads 时会出现错误,并出现无处不在的 无法加载数据访问 DLL,0x80004005 错误。

可以设置 CLR 镜像吗?如果可以,如何设置?

最佳答案

这实际上听起来像是 mscordacwks 问题。看看http://blogs.msdn.com/b/dougste/archive/2009/02/18/failed-to-load-data-access-dll-0x80004005-or-what-is-mscordacwks-dll.aspx有关解决此问题的出色指南。

关于module - Windbg中设置CLR模块的镜像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268019/

相关文章:

Node.js 使用外部 JS 文件?

clr - 获取 !dumpheap -stat 中未列出的 ValueTypes 的名称/MT 的有效方法

c# - 调用 C++/CLI 包装器时出现外部异常 E0434352

C++ CLR 不会在调试之外编译

c++ - 如何编译用于 .net 应用程序的 C++ 程序?

.net-4.0 - 无法在 WinDbg 中加载 SOS

php - 基于模块的php系统

ios - "error: underlying Objective-C module <module> not found"

linux - 将 linux 内核中的函数导出到 linux 模块

.net - 字典在 CLR 调试器 (DbgCLR) 中看起来很难看