我有一个 ASP.net 2.0 应用程序,我正在尝试使用 Windbg 和 SOS.dll 进行实时调试。当我将调试器附加到进程时,我看到它同时加载了 2.0 和 4.0 版本的 CLR。[mscorwks.dll 和 CLR.dll]。我通过 - .loadby sos mscorwks 加载我的 SOS。在此之后,我的 SOS 命令都不起作用。我收到“请求线程存储失败”、“无法从系统域获取信息”等。
我了解到这是由于不同版本的 CLR 的 mscordacwks.dll 不匹配。但是我在谷歌上找到的所有使用cordll命令加载正确版本的mscordacwks的解决方案都未能解决我的问题。特别是,我使用了 .cordll –ve –lp 但似乎没有任何区别。再次执行“!threads”命令后,我得到
“CLR DLL 状态:加载的 DLL C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll
请求线程存储失败”
我在stackoverflow中看到了另一个关于这个问题的条目。但对他来说幸运的是,在提出解决方案之前问题就消失了,而且这不是此条目的重复
任何帮助我使用 SOS 扩展和加载到我的进程中的 2 个版本的 CLR 的线索将不胜感激。
MSCORDACWKS 版本的加载行为如下 -
**0:033>** .cordll -e
CLR DLL status: Loaded DLL C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll
**0:033>** .cordll -ve -u -lp C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dll
CLR DLL status: No load attempts
**0:033>** .cordll -e
CLR DLL status: No load attempts
**0:033>** !threads
CLRDLL: Loaded DLL C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll Failed to request ThreadStore