按版本号下载SOS.dll

10

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

有人知道哪里可以提供这个版本号的SOS.dll下载吗? 我决定手动下载该dll并替换到Windows下的Microsoft.net文件夹中。


1
您可以在创建转储的同一台机器上获取适当版本的SOS.dll。您不应该替换您机器上的版本,只需使用.load <path>来加载它即可。如果您经常调试转储文件,我建议您保留所有独特版本的SOS的存储库。 - Dono
2个回答

17

更新: 我发表了一篇关于如何打开在其他机器上收集的快照的博客文章


如果您没有目标机器所需的SOS和CLR程序集,请尝试执行以下步骤:

  • .sympath c:\symbols //[setSymPath]
  • .symfix+ //[perform a try to download needed assemblies. Would take ages for the first time
  • .cordll -ve -u -l // 尝试自动加载所需的程序集
  • .reload // 以防万一

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

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

希望这可以帮助 =)


4
我并没有详细调查过,但似乎如果你键入!analyze -v,WinDbg会为.NET转储下载SOS.dll。此外,当进行转储分析时,DebugDiag 似乎也会加载SOS.dll。
如果以上方法均无法解决问题,请在创建转储的计算机上运行Mscordacwkscollector
我还维护着一个调试DLL的存档

Thomas,看起来档案馆已经无法访问了。它已经搬迁了吗?我发现它非常有用。 - Jeffrey LeCours
@JeffreyLeCours:哦,我好像不小心把它和我的业务一起删除了。我会调查一下的。虽然我已经很久没有维护它了,但是肯定还是有用的,甚至对我自己也是 :-) - Thomas Weller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接