Windbg:psscor4 不起作用

问题描述 投票:0回答:2

我搜索并尝试了很多东西,但无法让 psscor4 正常工作。

当我调用 !threads 时,我总是会得到

请求ThreadStore失败

我检查的内容如下:

  • 我有一个为 X86 平台编译的 .NET 4 应用程序
  • 我使用的是Windbg版本6.2.9200.16384,X86版本
  • 我正在使用 Microsoft 的最新 psscor4,它可以正确加载。我正在加载 X86 版本,所以应该没问题
  • 从 MS Symbol 服务器加载符号(命令 .symfix+,然后 .reload
  • .cordll 显示以下内容:

    CLR DLL 状态:已加载 DLL C:\Windows\Microsoft.NET\Framework 4.0.30319\mscordacwks.dll

当我尝试将 SOS 与 .loadby sos clr

一起使用时,也会发生同样的情况

有人有想法吗?

.net windbg sos
2个回答
6
投票

问题是您正在调试 .NET 4.5。 PSSCOR4 不适用于 .NET 4.5。 我还怀疑您在调试计算机上运行.NET 4.0,这会导致您的 SOS 也无法工作。 为了调试 .NET 4.5,您需要 .NET 4.5 SOS 和/或 SOSEX(适用于所有版本的 .NET 2.0+)。


3
投票

我发现这个问题会发生在以下情况:

  1. 您针对进程的 .NET 框架运行了错误版本的扩展 (!eeversion) - 正如 Steve Johnson 在此提到的。要修复此问题,请验证该进程使用的 .NET 版本 (!eeversion) 并下载相应的正确版本和扩展位数。

  1. 您没有针对进程的内存转储使用正确版本的 SOS - 即您的 SOS 版本与进行转储的计算机上的 SOS 版本不同。 为了测试这一点,请将 !eeversion 与 .chain 的结果进行比较,看看 SOS 版本是否相同。 如果不是,请确保 WinDbg 中的符号搜索路径设置正确,然后运行 .symfix,然后运行 .reload

符号搜索路径应设置为:

SRV*C:\SYMBOLS\PUBLIC*http://referencesource.microsoft.com/symbols;SRV*C:\SYMBOLS\PUBLIC*http://msdl.microsoft.com/download/symbols

您还可以尝试 John Robbins 博客上发布的解决方案:自动为小型转储加载正确的 SOS

请注意,我只能让他的解决方案仅适用于 WinDbg 版本 6.2+ - 版本 6.12 及更低版本不起作用。

HTH

© www.soinside.com 2019 - 2024. All rights reserved.