我有一个ASP.net 2.0应用程序,我正在尝试使用Windbg和SOS.dll进行实时调试。 当我将调试器附加到进程时,我看到它加载了CLR的2.0和4.0版本。[mscorwks.dll和CLR.dll]。我通过 - .loadby sos mscorwks加载我的SOS。 在此之后,我的SOS命令都不起作用。我收到“无法请求线程存储”,“无法从系统域获取信息”等。
我了解到这是因为mscordacwks.dll与不同版本的CLR不匹配。但是我在google上使用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 exention的线索将不胜感激。
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
答案 0 :(得分:1)
我遇到了同样的问题,并与微软有过接触。使用最新版本的windbg,即在BUILD会议期间发布的onb,我能够加载.net 2版本的数据访问库。
Windbg版本包含在Windows 8 driver kit中。我能够使用以下命令加载mscorwks数据访问库:
.cordll -I mscorwks -lp <path to mscorwks dll>
答案 1 :(得分:1)
今天我也有同样的问题,我找到的所有命令都不起作用:(
然后我尝试使用较旧的调试器加载转储,它可以工作。我的版本是6.7.5.0,幸运的是我的机器上仍然可以使用一些旧版本:)
答案 2 :(得分:0)
长期以来,微软支持人员已经讨论过这个问题,
答案 3 :(得分:0)
我在MS上打开了一个案例,我收到的回复是 -
“这是调试器的问题,产品团队现在正在研究它。”
我想我将不得不等待即将发布的windbg版本修复或探索其他工具!
谢谢!
答案 4 :(得分:0)
我今天仍然面临这个问题。
我发现一个解决方案适用于我(假设mscordacwks.dll&amp; sos.dll存储在文件夹&#34; C:\ sos&#34;)中:
.cordll -I mscorwks -lp "C:\sos"
.loadby sos mscorwks
!clrstack
此解决方案适用于以下版本的WinDbg:
已经在Win7 x86&amp; Win10 x64。