4

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

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

请求线程存储失败

我检查的内容如下:

  • 我有一个为 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\v4.0.30319\mscordacwks.dll

当我尝试将 SOS 与.loadby sos clr一起使用时,也会发生同样的情况

有人有想法吗?

4

2 回答 2

6

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

于 2013-09-16T12:50:56.173 回答
1

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

  1. 您正在针对进程 (!eeversion) 的 .NET 框架运行错误版本的扩展 - 正如 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 的博客上发布的解决方案:http: //wintellect.com/blogs/jrobbins/automatically-load-the-right-sos-for-the-minidump

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

高温高压

于 2014-03-05T22:12:04.210 回答