Невозможно загрузить 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.
4 ответа
DLL среды выполнения CLR была переименована в clr.dll
с.NET 4. Таким образом, чтобы загрузить правильную версию SOS, вам нужно настроить .loadby
команда. Т.е.
.loadby sos clr
Кроме того, если вы используете 64-разрядную версию, вам также следует установить 32-разрядную версию средств отладки для Windows, чтобы отлаживать 32-разрядные приложения. Они устанавливаются бок о бок, поэтому нет проблем с наличием 32-битной и 64-битной версии на одном компьютере.
Я бы посоветовал не копировать SOS.dll. SOS должен соответствовать точной версии фреймворка, поэтому, пока вы загружаете его из каталога фреймворка, используя .loadby
все готово
Команда WinDbg "g" означает [Продолжить]
Поскольку вы открываете дамп-файл, вы не можете продолжить, он содержит только память процесса.
Так что сообщение "Нет ошибки запускаемых отладчиков в" g "" логично в вашем случае, так как процесс не запущен.
Для загрузки правильной версии SOS используйте следующую команду в зависимости от версии.NET.
.NET 4 и выше .loadby SOS
.NET 3.5 и 2.loadby sos mscorwks
.NET 1.0 и 1.1.load clr10 \ sos
Ответы, приведенные выше, нуждаются в улучшении, поскольку с течением времени стало проще справляться с загрузкой SOS.
У ДЖОНА РОББИНСА есть хорошая статья об этом: посмотрите, что серверы символов Microsoft сконфигурированы по пути к символьному файлу и запустите! Анализ -v в приглашении windbg, это поможет вам загрузить соответствующие файлы sos. Для проверки запустите.chain в командной строке, и вы увидите загруженный dll.
Просто сталкивался с подобной проблемой при загрузке SOS и получал "указанный модуль не может быть найден". Придумали другое решение, так что если решения здесь не помогут, попробуйте это: