Неможливо завантажити SOS в WinDbg


132

Передумови: Я новачок у WinDbg і намагаюся його запустити вперше. Я хочу вивчити дамп пам'яті, який я взяв із запущеного сайту ASP.NET 4, розміщеного в IIS 7 на Windows Server 2008 (x86) і завантажений на мою локальну машину.

Я встановив інструменти налагодження і вперше запустив 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 і викопати цей дамп-файл. Будь-яка допомога буде дуже вдячна.

Fyi ... Я намагаюся відкрити дамп-файл у 64-бітній версії Windows 7 із 64-бітною версією Windbg.

Відповіді:


203

CLL час виконання програми було перейменовано на clr.dll.NET 4. Отже, щоб завантажити правильну версію SOS, вам потрібно відкоригувати свою .loadbyкоманду. Тобто

.loadby sos clr

Крім того, якщо ви працюєте на 64 біті, вам слід встановити 32-бітну версію інструментів налагодження для Windows , а також для налагодження 32-бітних програм. Вони встановлюються поруч, тому немає жодної 32-розрядної та 64-бітної версії на одній машині.

Я б порадив не копіювати SOS.dll. SOS повинен відповідати точній версії фреймворку, тому доки ви завантажуєте його з каталогу фреймворків, використовуючи .loadby, ви все готові.


Мені складно отримати обидва мої системи, оскільки останні інсталятори автоматично визначають тип процесора. Чи є прапор переосмислення, про який ви знаєте для msi? Я збираюся встановити стару 32-бітну версію WinDbg, але не знаю, чого очікувати.
Дейв

5
@Dave: Можливо, занадто мало пізно, але на веб-сторінці встановлення, знайденій тут: msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx, ви можете встановити пакети перерозподілюваного пакета, який розміщує MSI для кожної версії архітектури тут : C: \ Файли програм \ Microsoft SDKs \ Windows \ v7.1 \ Redist \ Налагодження інструментів для Windows
Aaron Lerch

Якщо я скажу, .loadby sos clrщо отримую Unable to find module 'clr'. Я намагаюся налагодити .NET 4 з x64 WinDbg
Csaba Toth

2
@CsabaToth це сміття чи ви робите налагодження в реальному часі? Якщо ви робите налагодження в реальному часі, CLR ще не завантажений. Ви можете зробити sxe ld clrзупинку, коли CLR завантажений, і тоді ви можете завантажити SOS в цій точці.
Брайан Расмуссен

@BrianRasmussen Це компільований виконуваний файл. Якщо я дивлюся на вікно Модулі, клацніть його завантаженим.
Csaba Toth

18

Команда WinDbg 'g' означає [Продовжити]

Оскільки ви відкриваєте дамп-файл, немає можливості продовжувати, він містить лише пам'ять процесу.

Отже, повідомлення "Немає помилки налагодження, що можна виконати у" g "" є логічним у вашому випадку, оскільки процес не працює .

Щодо завантаження правильної версії SOS, використовуйте наступну команду залежно від версії .NET.

.NET 4 і вище .loads sos

.NET 3.5 і 2 .loadby sos mscorwks

.NET 1.0 і 1.1 . Завантажити clr10 \ sos


1

Наведені вище відповіді потребують вдосконалення, оскільки з часом все було легше справлятися із завантаженням Sos.

У JOHN ROBBINS є приємна стаття навколо нього. Дивіться, що сервери символів Microsoft налаштовані в шлях до символьних файлів і запустіть! Для перевірки запуску .chain в підказці ви побачите завантажений DLL.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.