Не удается загрузить SOS в WinDbg


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

Я установил средства отладки и запустил WinDbg в первый раз, открыв аварийный дамп. Я пошел в Путь К Файлу / Символу и указать путь к "*srv*c:symbols*http://msdl.microsoft.com/downloads/symbols* " и ждал, пока все символы загрузятся.

при попытке загрузить SOS, я столкнулся с проблемами. Во-первых, я попробовал следующую команду...

.loadby sos mscorwks

...и получил ответ "не удалось найти модуль 'mscorwks'".

после очистки веб-страниц я попытался загрузить mscorwks, выполнив следующую команду...

sxe ld mscorwks.dll
g

...и получил ответ " нет запускаемых отладчиков ошибка в 'g'"

Я скопировал SOS.dll (от C:WindowsMicrosoft.NETFrameworkv4.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 128

4 ответа:

dll среды выполнения CLR была переименована в clr.dll С .NET 4. Поэтому для того, чтобы загрузить правильную версию SOS вам нужно настроить . То есть

.loadby sos clr

кроме того, если вы находитесь на 64 бита, вы должны установить 32-битную версию средства отладки для Windows также для отладки 32-битных приложений. Они устанавливают бок о бок, поэтому нет никаких проблем в том, чтобы иметь как 32-разрядную, так и 64-разрядную версию на одной машине.

Я бы посоветовал против копирование SOS.файл DLL. SOS должен соответствовать точной версии фреймворка, так что пока вы загружаете его из каталога фреймворка с помощью .loadby, все готово.

команда WinDbg 'g' означает [продолжить]

поскольку вы открываете дамп-файл, нет способа "продолжить", он содержит только память процесса.

Так что сообщение " Нет runnable ошибка debuggees в 'g '" логична в вашем случае, так как процесс не под управлением.

относительно загрузки правильной версии SOS используйте следующую команду в зависимости от версии .NET.

.Net 4 и выше.loadby sos

.NET 3.5 и 2 .loadby sos mscorwks

.NET 1.0 и 1.1 .загрузите clr10\sos

просто наткнулся на аналогичную проблему загрузки SOS и получал "указанный модуль не может быть найден". Придумал другое решение, так что если решения здесь не помогут вам, попробуйте это:

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

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

Джон Роббинс имеет хороший статьи вокруг него смотрите, что серверы символов Microsoft настроены в пути к файлу символов и запускаются !analyze-v on windbg prompt, это сделает трюк, он будет загружать соответствующие файлы sos. Чтобы проверить выполнение .цепочка в приглашении, и вы увидите загруженную dll.