【发布时间】:2011-08-02 15:10:40
【问题描述】:
我正在尝试使用转储文件和 windbg 调试在 64 位机器上运行的 32 位 .net 进程。当我加载转储文件时,我收到警告WARNING: MSVCR100_CLR0400 overlaps clr。
加载wow64exts并切换到32位模式后,我加载SOS并得到以下错误:
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: 10.0.30319.1
SOS Version: 4.0.30319.235
CLRDLL: Loaded DLL C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll
lmv 告诉我 CLR.dll 的版本实际上是 4.0.30319.235,但 MSVCR100_CLR0400.dll 的版本是 10.0.30319.1。
用lm查看加载的模块地址范围显示模块重叠:
726e0000 727b1000 MSVCR100_CLR0400 (deferred)
727a0000 72e10000 clr (deferred)
我的结论是 SOS 感到困惑并找到 MSVCR100_CLR0400 而不是 clr 的模块头。
知道如何解决这个问题,以便我可以使用 SOS 来调试这个转储吗?
【问题讨论】: