我在尝试使用 windbg 调试小型转储文件时遇到了一个非常奇怪的问题。我已经在我自己的机器上尝试过这个,也通过在目标机器上运行 windbg 来进行小型转储,但两种情况下的结果都是一样的。
在开始时,我加载所需的 dll,如下所示,请注意,如果我将 sympath 设置为 microsoft symbols server,则会出现同样的问题。
0:000> .symfix c:\sos
0:000> .load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos
检查链,一切看起来都很好,所以我现在运行 !pe 并得到一个关于 mscordacwks 的错误,据我所知,这通常表明我使用了错误版本的 .net 框架。但是当我在目标机器上运行它时,这真的不应该是这种情况。
然后我做一个详细的加载
.cordll -ve -u -l
并收到以下错误消息
CLRDLL: C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll:4.0.30319.17929 f:8 与所需版本不匹配 4.0.30319.296 f:8
我不明白为什么 windbg 正在寻找旧版本的 mscordacwks ?.296 版本似乎是从 ms 符号服务器下载的 clr 版本,但我明确告诉 windbg 使用本地版本。