Hintergrund: Ich bin neu in WinDbg und versuche, es zum ersten Mal zum Laufen zu bringen. Ich möchte einen Speicherauszug untersuchen, den ich von einer laufenden ASP.NET 4-Site erstellt habe, die in IIS 7 unter Windows Server 2008 (x86) gehostet und auf meinen lokalen Computer heruntergeladen wurde.
Ich habe die Debugging-Tools installiert und WinDbg zum ersten Mal gestartet, um den Absturzspeicherauszug zu öffnen. Ich ging zu Datei | Symboldateipfad und legen Sie den Pfad fest *srv*c:\symbols*http://msdl.microsoft.com/download/symbols*
und warten Sie, bis alle Symbole geladen sind.
Beim Versuch, SOS zu laden, sind Probleme aufgetreten. Zuerst habe ich den folgenden Befehl ausprobiert ...
.loadby sos mscorwks
... und erhielt die Antwort Unable to find module 'mscorwks'
.
Nachdem ich das Web durchsucht hatte, versuchte ich, mscorwks zu laden, indem ich den folgenden Befehl ausführte ...
sxe ld mscorwks.dll
g
... und erhielt die Antwort "Kein ausführbarer Debuggees-Fehler in 'g'"
Ich habe SOS.dll (von C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319) in das WinDbg-Verzeichnis kopiert und dann versucht ...
.load sos
... und erhielt den Fehler ...
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.
Ich bin mir nicht ganz sicher, wie ich vorgehen soll. Ich möchte nur SOS laden und diese Dump-Datei durchsuchen. Jede Hilfe wäre sehr dankbar.
Zu Ihrer Information ... Ich versuche, die Dump-Datei auf einer 64-Bit-Version von Windows 7 mit der 64-Bit-Version von Windbg zu öffnen.
.loadby sos clr
ich bekommeUnable to find module 'clr'
. Ich versuche, .NET 4 mit x64 WinDbgsxe ld clr
, um zu stoppen, wenn die CLR geladen wurde, und dann können Sie SOS an diesem Punkt laden.Der WinDbg-Befehl 'g' bedeutet [Weiter]
Da Sie eine Dump-Datei öffnen, gibt es keine Möglichkeit, fortzufahren. Sie enthält nur den Prozessspeicher.
So die Meldung „No runnable Fehler Debuggees in‚g‘“ ist in Ihrem Fall logisch , da der Prozess nicht ausgeführt wird .
Verwenden Sie zum Laden der richtigen SOS-Version je nach .NET-Version den folgenden Befehl.
.NET 4 und höher .loadby sos
.NET 3.5 und 2 .loadby sos mscorwks
.NET 1.0 und 1.1 .load clr10 \ sos
quelle
Die obigen Antworten müssen verbessert werden, da es im Laufe der Zeit einfacher war, mit dem Laden von SOS umzugehen.
JOHN ROBBINS hat einen schönen Artikel darüber. Sehen Sie, dass Microsoft-Symbolserver im Symboldateipfad konfiguriert sind und führen Sie! Analys -v an der windbg-Eingabeaufforderung aus. Dies führt den Trick aus, mit dem relevante sos-Dateien heruntergeladen werden. Um zu überprüfen, führen Sie .chain an der Eingabeaufforderung aus und Sie sehen die geladene DLL.
quelle
Ich bin gerade auf ein ähnliches Problem beim Laden von SOS gestoßen und habe festgestellt, dass das angegebene Modul nicht gefunden werden konnte. Haben Sie eine andere Lösung gefunden. Wenn Ihnen die Lösungen hier nicht weiterhelfen, probieren Sie Folgendes aus:
.loadby sos clr - angegebenes Modul konnte nicht gefunden werden
quelle