【问题标题】:Post-mortem .NET debugging with SOS.dll使用 SOS.dll 进行事后 .NET 调试
【发布时间】:2011-08-31 14:25:38
【问题描述】:

我正在开发一个混合模式应用程序(C++/CLI、C++、一些 C#),当它在现场崩溃时,会创建一个内存转储。我通常会从客户那里得到这些转储信息,然后尝试找出问题所在。

问题是 - 如何处理托管代码的事后调试?我通常将 WinDbg 与 SOS.dll 一起使用,但 SOS 似乎不向后兼容!我最近运行了 Windows 更新,现在我无法从客户端站点加载任何小型转储。它抱怨错误的 SOS 版本。

如何获取和加载以前的版本?我做错了什么?

【问题讨论】:

  • sos.dll afaik 最近没有更新。您通常不得不担心您的客户 进行配置更改。在您的 sos.dll 文件和 minidump 中的 mscorlib.dll 上使用 exact 错误消息、版本和日期更好地记录您的问题。
  • 能否列出您遇到的错误。

标签: .net debugging windbg sos minidump


【解决方案1】:

这可能是 x86/64 问题。你是怎么加载 sos 的?

您可以尝试使用以下方法加载 sos:

.loadby sos mscorwks

或者,如果失败,请尝试显式加载 64 位 sos:

.load c:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll

【讨论】:

  • 注意:这些例子有点奇怪。第一次尝试从mscorwks 的位置加载sos,即2.0 运行时。第二个示例尝试直接从 4.0 运行时加载sos
猜你喜欢
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2010-09-12
  • 1970-01-01
  • 2022-08-09
相关资源
最近更新 更多