WinDbg:SOS.dll x86 4.0.30319.237 的副本
我正在使用 WinDbg 来查看进程转储。转储是在装有 .NET 4 SP1 (4.0.30319.237) 的 x86 服务器上进行的。我尝试使用 x86 版本的 WinDbg 在 x64 计算机上进行调试,但遇到以下问题。
0:000> !EEVersion
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: 4.0.30319.237
SOS Version: 4.0.30319.239
4.0.30319.237 retail
Workstation mode
SOS Version: 4.0.30319.239 retail build
由于我的机器已经安装了最近的安全补丁,SOS DLL 文件现在的版本为 4.0.30319.239,因此我无法在 WinDbg 中使用任何 CLR 扩展。我已连接到 Microsoft 符号服务器并获得了正确版本的 mscordacwks.dll
。
在哪里可以获得 SOS.dll 版本 4.0.30319.237 的副本?
我在线获得的最佳匹配是通过.NET Framework 4 的可靠性更新 1 。但是,它无法安装在我的计算机上(并且我没有第二台计算机),因为它已经被取代。
恶梦!
I am using WinDbg to look into a process dump. The dump has been taken on an x86 server with .NET 4 SP1 (4.0.30319.237). I'm attempting to debug on my x64 machine using the x86 version of WinDbg, but I get the following issue.
0:000> !EEVersion
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: 4.0.30319.237
SOS Version: 4.0.30319.239
4.0.30319.237 retail
Workstation mode
SOS Version: 4.0.30319.239 retail build
As my machine has taken a recent security patch, the SOS DLL file is now at version 4.0.30319.239, so I am unable to use any of the CLR extensions in WinDbg. I have connected to Microsoft symbol servers and got the correct version of mscordacwks.dll
.
Where can I get a copy of SOS.dll version 4.0.30319.237?
The best match I get online is via Reliability Update 1 for the .NET Framework 4. However, this cannot be installed on my machine (and I don't have a second one) as it's already superceeded.
Nightmare!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我的情况几乎相同。
我已经下载并使用了 psscor4,它没有抱怨,而且堆栈看起来很合理,
你可以尝试一下!
I’m in nearly the same situation.
I have downloaded and used psscor4, it don’t complain, and the stack looks sensible
You could give it a try !
我发现解决此问题的唯一方法是从生成转储的计算机中获取 SOS.dll。我已经发生过几次这种情况,这是唯一对我有用的解决方案。 MS 不确保将所有版本的 SOS.dll 放在符号服务器上,这确实很烦人。
The only way I ever found to fix this was to get the SOS.dll from the machine that generated the dump. I've had this happen a couple of times now and that was the only solution that worked for me. It's really annoying that MS doesn't make sure to put the SOS.dlls for all versions on the symbol server.
如果您的分析计算机上没有安装与运行时完全相同的 .NET 版本在进行转储的计算机上,您确实需要的不仅仅是转储计算机上的
SOS.dll
。获取以下程序集:
sos.dll
、mscordacwks.dll
和(可能)mscorwks.dll
(如果是 .NET 2)或 clr.dll (.NET 4)。将它们全部放在分析机器上的一个目录中。下面的示例假设
C:\Debug
。复制 mscordacwks 计算机,然后重命名以反映平台和内部版本号。请记住,如果不是来自 Itanium,则在此上下文中的 64 位通常必须命名为
AMD64
。示例:
mscordacwks_x86_x86_2.0.50727.3625.dll
或
mscordacwks_AMD64_AMD64_4.0.30319.269.dll
启动 WinDbg,并将该目录添加到执行路径,以便可以找到重命名的
mscordacwks
。示例:“.exepath+ C:\Debug”
显式加载匹配的 SOS
示例:“.load C:\Debug\sos”
调试愉快!
If you don't have the same exact .NET build installed on your analysis machine as was running on the machine on which the dump was taken, you really need more than just
SOS.dll
off the dump machine.Get the following assemblies:
sos.dll
,mscordacwks.dll
, and (possibly)mscorwks.dll
(if .NET 2) orclr.dll
(.NET 4).Put them all in a directory on the analysis machine. The examples below assumes
C:\Debug
.Copy, then rename, the mscordacwks machine to reflect the platform and build number. Remember that 64-bit in this context usually must be named
AMD64
if not from Itanium.Examples:
mscordacwks_x86_x86_2.0.50727.3625.dll
or
mscordacwks_AMD64_AMD64_4.0.30319.269.dll
Bring up WinDbg, and add that directory to the execution path so the renamed
mscordacwks
can be found.Example: ".exepath+ C:\Debug"
Explicitly load the matching SOS
Example: ".load C:\Debug\sos"
Happy debugging!