【问题标题】:Download SOS.dll by version number按版本号下载 SOS.dll
【发布时间】:2014-07-15 17:21:46
【问题描述】:

我得到了一个需要 SOS.dll 4.0.30319.1008 的小型转储,但是 winDBG 未能下载正确的 dll。符号路径已经设置为SRV*C:\symcache*http://msdl.microsoft.com/download/symbols

有谁知道在哪里可以通过提供版本号下载 SOS.dll? 我决定手动下载dll,替换到windows下的Microsoft.net fold。

【问题讨论】:

  • 您可以在创建转储的同一台机器上获取适当版本的 SOS.dll。您不应该替换您机器上的版本。只需使用 .load 来加载它。如果您经常调试转储,我建议您保留您遇到的所有唯一版本的 SOS 的存储库。

标签: download windbg sos


【解决方案1】:

更新I published a blog post on how to open snapshots collected on other machines


如果您不需要来自目标机器的 SOS 和 CLR 程序集,请尝试执行以下步骤:

  • .sympath c:\symbols //[setSymPath]
  • .symfix+ //[尝试下载所需的程序集。第一次需要很长时间
  • .cordll -ve -u -l // 尝试自动加载所需的程序集
  • .reload // 以防万一

如果不起作用[罕见情况],需要执行一组步骤:

  1. SOSCLR 程序集包含在 Microsoft 更新中,因此您需要提取安装在目标计算机上的相同更新(内存转储被捕获的地方)。这是回购链接:http://www.mskbfiles.com/sos.dll.php
  2. 下载所需的更新并解压缩几次 [ f.e.您将获得“GDRGDR.cab”和“QFEGDR.cab”文件 -> 也将它们解压缩]
  3. 生成的文件夹需要名为“clr_dll_amd64”的程序集 -> 应重命名为 clr.dll
  4. 您需要找到需要的(CPU 架构、位数很重要)
  5. 您可以使用 .load c:\mytempfolder\NDP40-KB2835393-x64\QFEGDR\sos 将其加载到 Windbg 中 [只有完全匹配的程序集才有效]
  6. 加载文件后,使用 .reload 命令以防万一

希望这会有所帮助 =)

【讨论】:

    【解决方案2】:

    我没有详细调查,但如果您键入!analyze -v,WinDbg 似乎会下载 SOS.dll 以用于 .NET 转储。此外,DebugDiag 在您进行转储分析时似乎会加载 SOS.dll。

    如果所有选项都不起作用,请在创建转储的机器上运行 Mscordacwkscollector

    我还维护一个archive of debugging DLLs

    【讨论】:

    • Thomas,存档似乎已关闭。是搬家了吗?我发现它很有帮助
    • @JeffreyLeCours:哦,我好像不小心把它和我的业务一起删除了。我会调查一下。我已经很长时间没有维护它了,但可以肯定的是,它可能仍然有用,即使对我来说也是如此 :-)
    猜你喜欢
    • 2014-04-23
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    相关资源
    最近更新 更多