Erfassen von Speicherabbildern bei Abstürzen

Um Ihre Anwendung so zu konfigurieren, dass bei einem Absturz ein Speicherabbild erfasst wird, legen Sie bestimmte Umgebungsvariablen fest. Dies ist hilfreich, wenn Sie der Ursache eines Absturzes auf den Grund gehen möchten. Das Erfassen eines Speicherabbilds beim Auslösen einer Ausnahme kann Ihnen z. B. helfen, ein Problem zu erkennen, indem Sie den Zustand der App zum Zeitpunkt des Absturzes untersuchen.

In der folgenden Tabelle sind die Umgebungsvariablen aufgeführt, die Sie für die Erfassung von Speicherabbildern bei einem Absturz konfigurieren können.

Umgebungsvariable BESCHREIBUNG Standardwert
COMPlus_DbgEnableMiniDump oder DOTNET_DbgEnableMiniDump Wenn die Variable auf 1 festgelegt ist, wird ein Kernspeicherabbild erstellt. 0
COMPlus_DbgMiniDumpType oder DOTNET_DbgMiniDumpType Der Typ des zu erfassenden Speicherabbilds. Weitere Informationen finden Sie unter Arten von Minidumps. 2 (Heap)
COMPlus_DbgMiniDumpName oder DOTNET_DbgMiniDumpName Pfad zu einer Datei, in die das Speicherabbild geschrieben werden soll Stellen Sie sicher, dass der Benutzer, unter dem der DotNet-Prozess ausgeführt wird, über Schreibberechtigungen für das angegebene Verzeichnis verfügt. /tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics oder DOTNET_CreateDumpDiagnostics Wenn die Variable auf 1 festgelegt ist, wird die Diagnoseprotokollierung des Speicherabbildprozesses aktiviert. 0
COMPlus_EnableCrashReport oder DOTNET_EnableCrashReport (Erfordert .NET 6 oder höher; wird unter Windows nicht unterstützt.)
Ist die Variable auf 1 festgelegt, generiert die Runtime einen JSON-formatierten Absturzbericht, der Informationen zu den Threads und Stapelrahmen der abstürzenden Anwendung enthält. Der Name des Absturzberichts ist der Pfad oder Name des Speicherabbilds, an den .crashreport.json angehängt wird.
COMPlus_CreateDumpVerboseDiagnostics oder DOTNET_CreateDumpVerboseDiagnostics (Erfordert .NET 7 oder höher.)
Wenn die Variable auf 1 festgelegt ist, wird die ausführliche Diagnoseprotokollierung des Speicherabbildprozesses aktiviert.
0
COMPlus_CreateDumpLogToFile oder DOTNET_CreateDumpLogToFile (Erfordert .NET 7 oder höher.)
Der Pfad der Datei, in die die Diagnosemeldungen geschrieben werden sollen.
Wird die Variable nicht festgelegt, werden die Diagnosemeldungen in die Konsole der abstürzenden Anwendung geschrieben.

Hinweis

Für diese Umgebungsvariablen standardisiert .NET 7 das Präfix DOTNET_ anstelle von COMPlus_. Das Präfix COMPlus_ funktioniert jedoch weiterhin. Wenn Sie eine frühere Version der .NET-Runtime verwenden, sollten Sie weiterhin das Präfix COMPlus_ für Umgebungsvariablen verwenden.

Dateipfadvorlagen

Ab .NET 5 kann DOTNET_DbgMiniDumpName auch Formatierungsvorlagenspezifikationen enthalten, die dynamisch ausgefüllt werden:

Bezeichner Wert
%% Einzelnes Prozentzeichen (%)
%p PID des gesicherten Prozesses
%e Der Dateiname des ausführbaren Prozesses
%h Der von gethostname() zurückgegebene Hostname
%t Zeit des Speicherabbilds, ausgedrückt als Sekunden seit der Epoche, 1970-01-01 00:00:00 +0000 (UTC)

Arten von Minidumps

In der folgenden Tabelle sind die Werte aufgeführt, die Sie für DOTNET_DbgMiniDumpType verwenden können. Wenn Sie DOTNET_DbgMiniDumpType z. B. auf 1 festlegen, wird ein Speicherabbild des Typs Mini bei einem Absturz erfasst.

Wert Name Beschreibung
1 Mini Ein kleines Speicherabbild, das Modullisten, Threadlisten, Ausnahmeinformationen und alle Stapel enthält.
2 Heap Ein großes und relativ umfassendes Speicherabbild, das Modullisten, Threadlisten, alle Stapel, Ausnahmeinformationen, Handleinformationen und den gesamten Arbeitsspeicher mit Ausnahme von zugeordneten Images enthält.
3 Triage Identisch mit Mini , entfernt aber persönliche Benutzerinformationen, z. B. Pfade und Kennwörter.
4 Full Das größte Speicherabbild, das den gesamten Arbeitsspeicher einschließlich der Modulimages enthält