【发布时间】:2011-03-03 07:27:04
【问题描述】:
我有一个 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 中看到another entry 解决了这个问题。但对他来说幸运的是,在提出解决方案之前问题就消失了,而且这不是 this entry
如果有任何线索可以帮助我在我的进程中加载 2 个版本的 CLR 来使用 SOS 扩展,我们将不胜感激。
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
【问题讨论】:
-
好问题。当您执行
.cordll -ve -lp时,有关 mscordacwks 的输出是什么? -
@Brian - 我已经用我看到的 .cordll 的典型行为更新了我的问题。 .cordll -ve -lp 获得“无加载尝试”。但是,如果我在那之后执行任何其他 sos 命令,它会立即加载 4.0 mscordacwks 并向我抛出错误消息“无法请求线程存储”等。
-
我遇到了完全相同的问题:/windbg 一直在加载 .NET 4 dll。如果您得到答案,或者如果您在 Microsoft 论坛中有任何与您的案例相关的公共 URL...请发回 :)
-
当时的调试器版本是什么?我在使用 .cordll -ve -se -u -I 72f60000 -lp C:\WINNT\Microsoft.NET\Framework\v2.0.50727\ 的版本 6.12.0002.633 x86 上遇到了同样的问题,我坚持了一会儿,检测到 -I 实际上是一个大写字母,但即使这样,它也不起作用,所以我想知道我是否只是得到了同样的错误。