Dot-Net-4.0

無法在 WinDbg 中載入 SOS

  • December 7, 2010

背景:我是 WinDbg 的新手,第一次嘗試讓它執行。我想檢查從 Windows Server 2008 (x86) 上的 IIS 7 中託管的正在執行的 ASP.NET 4 站點獲取並下載到本地電腦的記憶體轉儲。

我安裝了調試工具並第一次啟動了 WinDbg,打開了故障轉儲。我去了文件 | 符號文件路徑並設置路徑*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 並探勘這個轉儲文件。任何幫助將不勝感激。

僅供參考…我正在嘗試使用 64 位版本的 Windbg 在 64 位版本的 Windows 7 上打開轉儲文件。

CLR 執行時 dll 已重命名為clr.dll.NET 4。因此,為了載入正確版本的 SOS,您需要調整.loadby命令。IE

.loadby sos clr

此外,如果您使用的是 64 位,則還應安裝 32 位版本的Windows 調試工具,以便調試 32 位應用程序。它們並排安裝,因此在同一台機器上同時擁有 32 位和 64 位版本沒有問題。

我建議不要複製 SOS.dll。SOS 需要匹配框架的確切版本,因此只要您使用 . 從框架目錄載入它.loadby,就可以了。

引用自:https://stackoverflow.com/questions/4373683