Не удалось загрузить SOS в WinDbg
Предыстория: я новичок в 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 и копаться в этом файле дампа. Любая помощь будет принята с благодарностью.
Кстати, я пытаюсь открыть файл дампа в 64-разрядной версии Windows 7 с 64-разрядной версией Windbg.
Ответы
Ответ 1
DLL среды выполнения CLR была переименована в clr.dll
с помощью .NET 4. Поэтому, чтобы загрузить правильную версию SOS, вам нужно настроить команду .loadby
. Т.е.
.loadby sos clr
Кроме того, если вы используете 64-разрядную версию, вам также следует установить 32-разрядную версию средств отладки для Windows, чтобы отлаживать 32-разрядные приложения. Они устанавливаются бок о бок, поэтому нет проблем с наличием 32-битной и 64-битной версии на одном компьютере.
Я бы посоветовал не копировать SOS.dll. SOS должен соответствовать точной версии фреймворка, поэтому, пока вы загружаете ее из каталога фреймворка с помощью .loadby
, все готово.
Ответ 2
Команда "g" WinDbg означает [Продолжить]
Поскольку вы открываете файл дампа, нет возможности "продолжить", он содержит только память процесса.
Таким образом, сообщение "No runnable debuggees error in" g "логично в вашем случае, так как процесс не запущен.
Что касается загрузки правильной версии SOS, используйте следующую команду в зависимости от версии .NET.
.NET 4 и выше.loadby sos
.NET 3.5 и
.loadby sos mscorwks
.NET 1.0 и 1.1
.load clr10\sos
Ответ 3
Просто наткнулся на подобную проблему, загрузив SOS и получив "указанный модуль не удалось найти". Придумал другое решение, поэтому, если решения здесь вам не помогут, попробуйте это:
.loadby sos clr - указанный модуль не найден
Ответ 4
Ответы выше нуждаются в улучшении, так как с течением времени было легче справиться с загрузкой sos.
JOHN ROBBINS имеет приятный статью вокруг него, см., что серверы символов Microsoft настроены в пути файла символов и запускаются! анализировать -v на windbg подскажите, это сделает трюк, он будет загружать соответствующие файлы sos.
Чтобы проверить запуск .chain в приглашении, вы увидите загруженную dll.