我知道这已经被问过很多次了,但是我已经阅读了所有这些并且无法解决问题。
基本上,我有一个在 Azure 中作为 Web 角色运行的 IIS 7.0 x64 w3wp.exe 进程的内存转储。我有多个转储,无法在 windbg 或 SciTech .Net Memory Profiler 中加载其中任何一个。对于两者来说,问题似乎都在于找到正确的 mscordacwks.dll。
我已经从机器上获得了 x64 和 x86 mscordacwks.dll,这无法加载它们中的任何一个。
因此,当我想在 windbg 中查看托管线程等时,我会遇到熟悉的错误:
0:000> !threads
The version of SOS does not match the version of CLR you are debugging. Please
load the matching version of SOS for the version of CLR you are debugging.
CLR Version: 4.0.30319.551
SOS Version: 4.0.30319.17929
CLRDLL: Unable to get version info for 'D:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscordacwks.dll', Win32 error 0n87
DBGHELP: C:\Program Files\Debugging Tools for Windows (x64)\sym\mscordacwks_AMD64_AMD64_4.0.30319.551.dll\4F191DB4964000\mscordacwks_AMD64_AMD64_4.0.30319.551.dll - OK
CLRDLL: Loaded DLL C:\Program Files\Debugging Tools for Windows (x64)\sym\mscordacwks_AMD64_AMD64_4.0.30319.551.dll\4F191DB4964000\mscordacwks_AMD64_AMD64_4.0.30319.551.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 or on the symbol path
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 supported cross platform architecture as
the dump file. For example, an ARM dump file must be debugged
on an X86 or an ARM machine; an AMD64 dump file must be
debugged on an AMD64 machine.
所以我在这里看到了两个奇怪的地方:
- Windows 部署在 Azure 上的 D:\ 驱动器上(这会导致问题吗?)
- CLR 版本:4.0.30319。551但 SOS 版本:4.0.30319。17929
那么它可能是17929的 SOS 版本吗?服务器上的 mscordacwks.dll 肯定是551。
在没有解决问题的情况下,我已经运行了你能想象到的每一个命令行。
提前致谢