当我在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/