Warum kann nicht WinDBG finden mscordacwks.dll?
Ich versuche zu verwenden WinDBG analysieren, einen crash-dump von einem unserer Maschinen in der Produktion. Die Wurzel meines Problems scheint zu sein, dass ich einen anderen aufbauen, der .NET framework als Produktions-Maschine, nur ich weiß nicht wie das problem zu lösen. Wenn ich dran !sym laute und dann ausführen !dlk(aus SOSEX) bekomme ich die folgende Fehlermeldung, wie es versucht zu finden, die 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.
Nahm ich die mscorwks.dll, mscordawks.dll und sos.dll aus der Produktion von Maschine und legte Sie in C:\mysymbols. Es sieht aus wie WinDBG ist auf der Suche nach einer dll INNERHALB der mscorwks dll.
InformationsquelleAutor der Frage Jonathan Beerhalter | 2012-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses sehr komplette Erklärung von Doug Stewart half mir in dieser situation.
Zusammenfassung:
mscordacwks_AAA_AAA_2.0.50727.xxxx.dll
(abhängig von Ihrer Architektur und der spezifischen framework-version) - z.B.mscordacwks_x86_x86_2.0.50727.3607.dll
für den speziellen Fall in Frage.windbg.exe
.InformationsquelleAutor der Antwort CodeFox
Nachdem diese 2 Befehle alles OK geworden:
InformationsquelleAutor der Antwort Lu55
Nachdem Sie den Artikel hier http://codenasarre.wordpress.com/2011/06/22/sending-an-sos/
Dann im Grunde versucht, jede Inkarnation verschieben von Symbolen um, ich konnte, ich fand, dass die einzige Art, wie ich bekommen konnte, diese Arbeit zu kopieren mscorwks.dll, mscordawks.dll und sos.dll aus der Produktion der Maschine in C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
Scheint es, dass WinDBG nicht so gut mit mehreren Versionen der gleichen DLL. Vielleicht habe ich etwas falsch gemacht, aber das kopieren der dlls, die direkt auf die .NET Framework-Verzeichnis zumindest hat mich zum laufen.
InformationsquelleAutor der Antwort Jonathan Beerhalter
Habe ich auch festgestellt, dass mit der 64bit-version von windbg und Debuggen von "Any CPU" managed-code-Projekt, wo der build ist "lieber 32 bit" Ursache für diesen Fehler.
InformationsquelleAutor der Antwort Himilou
Neben CodeFox die Antwort, die Sie brauchen, um das Verzeichnis, in dem die mscorwks.dll (oder clr.dll wenn Sie verwenden .NET 4+), die in die Image-Datei Pfad in WinDbg (aus der Datei Menü).
InformationsquelleAutor der Antwort Dave Black