Wenn ngen während der Installation in einer .NET-verwalteten Anwendung ausgeführt wird und ein Absturzspeicherauszug aus der Windows-Fehlerberichterstattung für die Anwendung abgerufen wird, wie können Sie einen Stack-Trace, Variablen usw. anzeigen? >
Hier finden Sie einige Hintergrundinformationen zu der Frage: Wir haben eine .NET-Anwendung, die bei der Installation erkannt wird. Wenn es aufgrund einer nicht behandelten .NET-Ausnahme abstürzt, wird der Absturz in der Windows-Fehlerberichterstattung ignoriert, und ich konnte die Datei minidump.mdmp von winqual.microsoft.com herunterladen.
Ich legte minidump.mdmp in einen Ordner mit den .dbg-Dateien für den Build der abgestürzten App und doppelklickte auf minidump.mdmp, um es in einer neuen Instanz von VS2008 SP1 zu öffnen. Mein Stack-Trace sieht folgendermaßen aus:
kernel32.dll! RaiseException () + 0x3d Bytes
mscorwks.dll! RaiseTheExceptionInternalOnly () + 0x295 Bytes
mscorwks.dll! JIT_Throw () + 0x130 Bytes
MyApp.ni.exe! 000007feee74c84c ()
[Frames unten möglicherweise falsch und / oder fehlen, keine Symbole für MyApp.ni.exe geladen]
0000000070000d5e ()
MyApp.ni.exe! 000007feee611000 ()
000000000300bf78 ()
000000000300bf60 ()
Das Module-Fenster zeigt an, dass Symbole für die OS- und .NET-DLLs geladen werden, aber für die Anwendungsmodule bekomme ich Folgendes:
MyApp.exe - & gt; Keine systemeigenen Symbole in der Symboldatei.
MyApp.ni.exe - & gt; Keine passende Binärdatei gefunden.
MyAppsLibrary.ni.dll - & gt; Keine passende Binärdatei gefunden.
Am einfachsten debuggen Sie mit den Windows-Debuggern (Windbg, cdb oder ntsd) und laden die SOS-Debugger-Erweiterung (Sie können nach SOS für weitere Details suchen).
Soweit ich mich erinnere, sollte der NGEN-Teil der Sache für SOS nicht von Bedeutung sein, solange du die Original-EXE und die Symbole hast (Da es deine App ist, würde ich erwarten, dass du das nicht hast) exe und Symbole).
"Debugging Tools für Windows" (speziell WinDBG) hat eingeschränkte Unterstützung für gemanagte Anwendungen. Wenn PDBs vorhanden sind, sollten Sie in der Lage sein, den Aufruf-Stack einschließlich der Quellzeilenreferenzen zu sehen. Um Variablenwerte zu sehen, müssen Sie das SOS-Plugin verwenden, was schwieriger ist, wenn Sie nur das Call-Stack-Fenster öffnen.
Wenn Sie die Clients erneut zur Ausführung Ihrer App auffordern können, bitten Sie sie, sie mit dem folgenden Umgebungsvariablensatz auszuführen: COMPLUS_ZapDisable = 1 Auf diese Weise lädt CLR die nativen Bilder beim Ausführen Ihrer App nicht und Sie sehen Ihre üblichen Module mit Symbolen auf dem Stapel.
Da es sich um verwalteten Code handelt, müssen Sie möglicherweise die Umgebungsvariable _NT_EXECUTABLE_IMAGE_PATH so einstellen, dass sie auf die Ordner verweist, in denen Ihre ausführbaren Dateien gespeichert sind. In diesem Fall müssen Sie den Ordner im NativeImage-Cache suchen, der auf Ihre Assemblies verweist. Der Debugger benötigt die Images, um die Assembly zu laden.
Tags und Links windows-error-reporting postmortem-debugging ngen minidump