Frage

Wenn ngen auf einer verwalteten .NET-Anwendung bei der Installation ausgeführt wird, und ein Crash-Dump wird von Windows-Fehlerberichterstattung für die App abgerufen wird, wie können Sie es verwenden, um einen Stack-Trace, Variablen, um zu sehen, etc.?

Hier einige Hintergrundinformationen zu der Frage bezogen werden: Wir haben eine .NET-Anwendung, die bei der Installation ngened wird. Wenn es aufgrund einer nicht behandelten .NET Ausnahme abstürzt, wird der Absturz in Windows-Fehlerberichterstattung bucketted, und davon, dass ich konnte die minidump.mdmp Datei von winqual.microsoft.com zum Download bereit.

Ich habe minidump.mdmp in einem Ordner die .dbg Dateien für den Build des App enthalten, das abgestürzt ist, und doppelgeklickt minidump.mdmp es zu öffnen in einer neuen Instanz von VS2008 SP1. Mein Stack-Trace sieht wie folgt aus:

  

kernel32.dll! Raiseexception () + 0x3d Bytes
      mscorwks.dll! RaiseTheExceptionInternalOnly () + 0x295 Bytes
      mscorwks.dll! JIT_Throw () + 0x130 Bytes
      MyApp.ni.exe! 000007feee74c84c ()
      [Frames unten falsch sein kann und / oder fehlen, geladen keine Symbole für MyApp.ni.exe]
      0000000070000d5e ()
      MyApp.ni.exe! 000007feee611000 ()
      000000000300bf78 ()
      000000000300bf60 ()

Das Fenster Module gibt an, dass Symbole für das Betriebssystem geladen werden und .NET-DLLs, aber für die Anwendungsmodule, ich diese:

  

MyApp.exe. -> keine native Symbole in Symboldatei
      MyApp.ni.exe -> Keine passende binäre
.       MyAppsLibrary.ni.dll -> Keine passende binär.

War es hilfreich?

Lösung

Der einfachste Weg, um diese Deponien ist mit dem Windows-Debuggers (Windbg, cdb oder ntsd) zu debuggen und die SOS-Debugger-Erweiterung zu laden (Sie SOS um weitere Informationen suchen).

Soweit ich mich erinnere, sollte der NGEN'ed Teil der Sache keine Rolle für SOS solange Sie die Original-EXE und die Symbole (Da es Ihre App ist, würde ich erwarten, dass Sie das nicht ngen'ed haben exe und Symbole).

Andere Tipps

"Debugging Tools for Windows" (genauer gesagt, WinDBG) hat eine begrenzte Unterstützung für verwaltete Anwendungen. Ausgerüstet mit PDBs, sollten Sie in der Lage sein, den Call-Stack, um zu sehen, Referenzen einschließlich Quellenleitung. Um Variablenwerte zu sehen, müssen Sie die SOS-Plugin verwenden, was schwieriger ist, dass nur das Call-Stack-Fenster zu öffnen.

Wenn Sie in der Lage, die Kunden fordern Sie Ihre App wieder laufen, fragen sie sie mit folgendem Umgebungsvariable Satz auszuführen: COMPLUS_ZapDisable = 1 Diese CLR Art und Weise wird nicht die nativen Bilder laden, wenn Ihre Anwendung ausgeführt wird, und Sie werden die gewöhnlichen Module mit Symbolen auf dem Stapel sehen.

http://referencesource.microsoft.com/faq.aspx

Ist das eine Hilfe für Sie:

Der Typ einige Symbole in der Lage sein scheint zu laden seine Anwendung aus der Crash-Dump zu debuggen, hatte ein Problem Laden Sie die richtigen Symbole aber jemand beantwortet seine Frage.

Da dieser Code verwaltet wird, wird möglicherweise die _NT_EXECUTABLE_IMAGE_PATH Umgebungsvariable verweisen auf die Ordner, in denen Sie Ihre ausführbaren Dateien leben festlegen müssen. In diesem Fall müssen Sie den Ordner, in dem NativeImage Cache, dass Punkte auf Ihre Baugruppen lokalisieren. Der Debugger muss die Bilder, um die Montage zu laden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top