Почему WinDBG не может найти mscordacwks.dll? - PullRequest
17 голосов
/ 03 февраля 2012

Я пытаюсь использовать WinDBG для анализа аварийного дампа с одной из наших производственных машин. Корень моей проблемы, похоже, в том, что у меня сборка .NET Framework отличается от рабочей машины, но я не знаю, как решить эту проблему. Когда я включаю! Sym noisy, а затем запускаю! Dlk (из SOSEX), я получаю следующую ошибку, когда пытаюсь найти mscordacwks dll

0:000> !dlk
CLRDLL: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dll:2.0.50727.3623 f:0
doesn't match desired version 2.0.50727.3607 f:0
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mscordacwks_x86_x86_2.0.50727.3607.dll/4ADD5446590000/mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mscordacwks_x86_x86_2.0.50727.3607.dll/4ADD5446590000/mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
CLRDLL: Unable to find mscordacwks_x86_x86_2.0.50727.3607.dll by mscorwks search
CLRDLL: Unable to find 'mscordacwks_x86_x86_2.0.50727.3607.dll' on the path
SYMSRV:  c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mscorwks.dll/4ADD5446590000/mscorwks.dll not found
SYMSRV:  c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found
DBGHELP: C:\Program Files\Debugging Tools for Windows (x86)\mscorwks.dll - file not found
SYMSRV:  c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mscorwks.dll/4ADD5446590000/mscorwks.dll not found
SYMSRV:  c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found
CLRDLL: Unable to find mscorwks.dll by search
CLRDLL: ERROR: Unable to load DLL mscordacwks_x86_x86_2.0.50727.3607.dll, Win32 error 0n2
Unable to initialize .NET data interface. Version 2.0.50727.3607 of mscordacwks.dll is required.
Locate and load the correct version of mscordacwks.dll. See documentation for the .cordll command.

Я взял mscorwks.dll, mscordawks.dll и sos.dll с рабочей машины и поместил их в C: \ mysymbols. Похоже, что WinDBG ищет DLL ВНУТРИ DLL MSCORWKS.

Ответы [ 5 ]

11 голосов
/ 26 апреля 2013

Это очень полное объяснение Дуга Стюарта помогло мне в этой ситуации.

Резюме:

  • Получите файл mscordacwks.dll из исходной системы.
  • Переименуйте его в что-то вроде mscordacwks_AAA_AAA_2.0.50727.xxxx.dll (в зависимости от вашей архитектуры и конкретной версии платформы) - например, mscordacwks_x86_x86_2.0.50727.3607.dll для конкретного случая в вопросе.
  • Скопируйте этот файл в каталогwindbg.exe.
8 голосов
/ 08 декабря 2014

После этой 2 команды все становится ОК:

0:000> .symfix
0:000> .reload
3 голосов
/ 03 февраля 2012

После прочтения статьи здесь http://codenasarre.wordpress.com/2011/06/22/sending-an-sos/

И затем, в основном, пробуя каждую инкарнацию движущихся символов вокруг себя, я обнаружил, что единственный способ получить эту работу - это скопировать mscorwks.dll., mscordawks.dll и sos.dll с рабочей машины в C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727

Кажется, что WinDBG не так хорошо работает с несколькими версиями одной и той же DLL,Возможно, я сделал что-то не так, но копирование библиотек непосредственно в каталог .NET Framework, по крайней мере, заставило меня работать.

2 голосов
/ 14 сентября 2017

Я также обнаружил, что использование 64-битной версии windbg и отладка проекта с управляемым кодом «Любой ЦП», в котором для сборки задано «предпочесть 32-битную», вызовет эту ошибку.

0 голосов
/ 14 мая 2014

В дополнение к ответу CodeFox вам нужно поместить каталог, в котором находится mscorwks.dll (или clr.dll, если вы используете .NET 4+) в путь к файлу изображения в WinDbg (вне меню «Файл»).

...