Wie debugge ich eine WER-Minidump eines "ngen" ed Bildes

8

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.

    
Edward Brey 05.10.2009, 17:15
quelle

5 Antworten

3

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).

    
Remi Lemarchand 14.12.2009, 01:11
quelle
1

"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.

    
Jonathan 05.12.2009 09:47
quelle
1

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.

Ссылка

    
Kirill Osenkov 17.02.2011 01:34
quelle
0

Ist das eine Hilfe für Sie?

Der Typ scheint in der Lage zu sein, einige Symbole zu laden, um seine Anwendung aus dem Absturzspeicher zu debuggen, hatte ein Problem beim Laden der richtigen Symbole, aber jemand beantwortete seine Frage.

    
BlueTrin 04.12.2009 13:33
quelle
0

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.

    
nithins 08.12.2009 20:35
quelle