WinDbg:SOS.dll x86 4.0.30319.237 的副本

发布于 2024-12-19 22:10:24 字数 824 浏览 4 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦幻的心爱 2024-12-26 22:10:24

我的情况几乎相同。

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.235
SOS Version: 4.0.30319.239
4.0.30319.235 retail
Workstation mode
SOS Version: 4.0.30319.239 retail build

我已经下载并使用了 psscor4,它没有抱怨,而且堆栈看起来很合理,

0:000> !psscor4.EEVersion
4.0.30319.235 retail
Workstation mode
SOS Version: 4.0.0.4 retail build
0:000> !psscor4.DumpStack
OS Thread Id: 0x874 (0)
Current frame: ntdll!KiFastSystemCallRet
ChildEBP RetAddr  Caller,Callee
002ec6c8 77d16a24 ntdll!NtWaitForSingleObject+0xc 
002ec6cc 758e6f0f mswsock!SockWaitForSingleObject+0x1ba , calling        ntdll!NtWaitForSingleObject
002ec70c 758e65cc mswsock!SockDoConnectReal+0x2c3 , calling    mswsock!SockWaitForSingleObject
002ec77c 71a63267 clr!GetCompileFlags+0x144 , calling clr!_EH_epilog3
002ec780 76ee2f7d ws2_32!WahReferenceContextByHandle+0x63 
002ec7a4 758e5fac mswsock!SockDoConnect+0x3a1 , calling mswsock!SockDoConnectReal
002ec7e4 76a82c6a kernel32!FlushInstructionCache+0x18 , calling     ntdll!ZwFlushInstructionCache

你可以尝试一下!

I’m in nearly the same situation.

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.235
SOS Version: 4.0.30319.239
4.0.30319.235 retail
Workstation mode
SOS Version: 4.0.30319.239 retail build

I have downloaded and used psscor4, it don’t complain, and the stack looks sensible

0:000> !psscor4.EEVersion
4.0.30319.235 retail
Workstation mode
SOS Version: 4.0.0.4 retail build
0:000> !psscor4.DumpStack
OS Thread Id: 0x874 (0)
Current frame: ntdll!KiFastSystemCallRet
ChildEBP RetAddr  Caller,Callee
002ec6c8 77d16a24 ntdll!NtWaitForSingleObject+0xc 
002ec6cc 758e6f0f mswsock!SockWaitForSingleObject+0x1ba , calling        ntdll!NtWaitForSingleObject
002ec70c 758e65cc mswsock!SockDoConnectReal+0x2c3 , calling    mswsock!SockWaitForSingleObject
002ec77c 71a63267 clr!GetCompileFlags+0x144 , calling clr!_EH_epilog3
002ec780 76ee2f7d ws2_32!WahReferenceContextByHandle+0x63 
002ec7a4 758e5fac mswsock!SockDoConnect+0x3a1 , calling mswsock!SockDoConnectReal
002ec7e4 76a82c6a kernel32!FlushInstructionCache+0x18 , calling     ntdll!ZwFlushInstructionCache

You could give it a try !

云巢 2024-12-26 22:10:24

我发现解决此问题的唯一方法是从生成转储的计算机中获取 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.

凹づ凸ル 2024-12-26 22:10:24

如果您的分析计算机上没有安装与运行时完全相同的 .NET 版本在进行转储的计算机上,您确实需要的不仅仅是转储计算机上的 SOS.dll

  1. 获取以下程序集:sos.dllmscordacwks.dll 和(可能)mscorwks.dll(如果是 .NET 2)或 clr.dll (.NET 4)。

  2. 将它们全部放在分析机器上的一个目录中。下面的示例假设C:\Debug

  3. 复制 mscordacwks 计算机,然后重命名以反映平台和内部版本号。请记住,如果不是来自 Itanium,则在此上下文中的 64 位通常必须命名为 AMD64

    示例:

    mscordacwks_x86_x86_2.0.50727.3625.dll

    mscordacwks_AMD64_AMD64_4.0.30319.269.dll

  4. 启动 WinDbg,并将该目录添加到执行路径,以便可以找到重命名的 mscordacwks

    示例:“.exepath+ C:\Debug”

  5. 显式加载匹配的 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.

  1. Get the following assemblies: sos.dll, mscordacwks.dll, and (possibly) mscorwks.dll (if .NET 2) or clr.dll (.NET 4).

  2. Put them all in a directory on the analysis machine. The examples below assumes C:\Debug.

  3. 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

  4. Bring up WinDbg, and add that directory to the execution path so the renamed mscordacwks can be found.

    Example: ".exepath+ C:\Debug"

  5. Explicitly load the matching SOS

    Example: ".load C:\Debug\sos"

Happy debugging!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文