Проблема отладки зависания-дампа в windbg

После того, как я загрузил sosex, я получаю следующую ошибку. Есть идеи? Дамп зависания с 32-битной машины, мой 64-битный. Нужно ли что-то устанавливать?

!clrstack

CLR DLL status: ERROR: Unable to load DLL mscordacwks_x86_x86_2.0.50727.3623.dll, Win32 error 0n2

1 ответ

Решение

Проблема в том, что версия mscordacwks на вашем компьютере отличается от версии из аварийного дампа. Это не проблема bitnesss - хотя ваша машина 64-битная, у вас установлен 32-битный.NET. Мой находится в C:\Windows\Microsoft.NET\Framework\v2.0.50727.

Копия, которая у вас есть, не будет иметь такого длинного имени, она будет называться mscordacwks.dll. Когда отладчик видит, что ваша "активная" копия отличается, он будет искать копию с длинным именем (избегая ада), и это также скажет вам, какую версию вам нужно получить. После того, как я получаю правильный файл mscordacwks.dll (например, с оригинального компьютера), я копирую его в каталог фреймворка и называю его так, как показано в сообщении об ошибке. Я также установил путь к изображению windbg, чтобы включить каталог фреймворка.

SOS должен использовать сборку фреймворка mscordacwks для понимания структур данных в памяти. Это все объясняется в сообщении блога "Не удалось загрузить DLL доступа к данным, 0x80004005" - ИЛИ - Что такое mscordacwks.dll? на заметках из темного уголка блога.

В Интернете вы найдете множество вопросов о том, как получить различные версии этой библиотеки. Предполагая, что вы не можете получить его с компьютера, который создал аварийный дамп, и он не загружается с сервера символов Microsoft, в прошлом я занимался поиском mscordacwks на microsoft.com и нужной мне версией (например, 2.0.50727.3623). Обычно это патч безопасности, который вы можете скачать.

Если у вас нет подходящей системы для установки, мне повезло открыть установочный файл с 7zip. Я нашел файл mscordacwks в кабине, которая была в файле исправления (файл MSP), который был в исполняемом файле установки исправления безопасности. Каждый из них может быть открыт с 7zip.

Когда вы нажимаете CAB-файл, иногда лучше использовать expand.exe, так как он может распаковать файлы, которые 7zip (v4.65) не делает. Если вы открываете CAB с 7zip, который имеет _manifest_.cix.xmlиспользуйте вместо этого команду развернуть, поскольку она использует манифест для извлечения, распаковки и переименования содержимого. 7zip (делает простое извлечение для...) оставляет его необработанным с кучей файлов, названных численно, буквально 1, 2 и т. Д. Эти файлы могут быть сжаты. Как вы знаете, если вы откроете их (например, с помощью SciTE), они начнут с подписи, такой как PA30 (она будет соответствовать исходному атрибуту "type" из манифеста).

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