无法在WinDbg中加载SOS


132

背景:我是WinDbg的新手,并试图使其首次运行。我想检查一个内存转储,该内存转储是从Windows Server 2008(x86)上的IIS 7中托管的一个正在运行的ASP.NET 4站点上获取的,并已下载到我的本地计算机上。

我安装了调试工具并首次启动WinDbg,打开故障转储。我去File | 将符号文件路径设置为路径,*srv*c:\symbols*http://msdl.microsoft.com/download/symbols*并等待所有符号加载。

尝试加载SOS时遇到问题。首先,我尝试了以下命令...

.loadby sos mscorwks

...并收到了回复Unable to find module 'mscorwks'

在网上搜索后,我尝试通过执行以下命令来加载mscorwks ...

sxe ld mscorwks.dll
g

...并收到响应“'g'中没有可运行的调试错误”

我将SOS.dll(从C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319)复制到WinDbg目录中,然后尝试...

.load sos

...并收到错误...

The call to LoadLibrary(sos) failed, Win32 error 0n193
    "%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.

我不太确定如何进行。我只想加载SOS并挖掘此转储文件。任何帮助将不胜感激。

Fyi ...我正在尝试使用64位版本的Windbg在64位版本的Windows 7上打开转储文件。

Answers:


203

CLR运行时dll被clr.dll.NET 4 重命名为。因此,为了加载正确版本的SOS,您需要调整.loadby命令。即

.loadby sos clr

另外,如果您使用的是64位,则还应该安装32位版本的Windows调试工具,以便调试32位应用程序。它们可以并排安装,因此在同一台计算机上同时安装32位和64位版本没有问题。

我建议不要复制SOS.dll。SOS需要与框架的确切版本匹配,因此,只要您使用从框架目录中加载它.loadby,就可以完成所有设置。


由于最新的安装程序会自动检测CPU类型,因此我发现将它们同时安装在我的系统上具有挑战性。您是否知道msi的替代标志?我将安装旧的32位版本的WinDbg,但不知道会发生什么。
戴夫

5
@Dave:可能太少了,为时已晚,但是对于在此处找到的安装网页:msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx,您可以选择安装可再发行软件包,从而将每种体系结构版本的MSI放入此处:C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Redist \ Windows调试工具
Aaron Lerch

如果我说.loadby sos clr我知道Unable to find module 'clr'。我正在尝试使用x64 WinDbg调试.NET 4
Csaba Toth 2013年

2
@CsabaToth是转储还是在进行实时调试?如果您正在进行实时调试,则可能尚未加载CLR。您可以sxe ld clr在加载CLR时停止,然后再加载SOS。
Brian Rasmussen

@BrianRasmussen这是一个编译的可执行文件。如果我查看“模块”窗口,请单击“加载”。
Csaba Toth 2013年

18

WinDbg命令'g'表示[继续]

由于您正在打开转储文件,因此无法继续操作,它仅包含进程内存。

因此消息“ g中没有可运行的调试错误”在您的情况下是合乎逻辑的,因为该进程未运行

关于加载正确版本的SOS,请根据.NET版本使用以下命令。

.NET 4及更高版本 .loadby sos

.NET 3.5和2 .loadby sos mscorwks

.NET 1.0和1.1 .load clr10 \ sos


1

上面的答案需要改进,因为随着时间的推移,事情变得更容易处理sos加载。

JOHN ROBBINS 周围有一篇不错的文章,看到在符号文件路径中配置了Microsoft符号服务器,并在windbg提示符下运行!analyze -v,这样做可以解决问题,它将下载相关的sos文件。要验证在提示符下运行.chain,您将看到已加载的dll。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.