Невозможно загрузить 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 и получал "указанный модуль не может быть найден". Придумали другое решение, так что если решения здесь не помогут, попробуйте это:

.loadby sos clr - указанный модуль не найден

Другие вопросы по тегам