Freigeben über


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
DOTNET_DbgEnableMiniDump Wenn die Variable auf 1 festgelegt ist, wird ein Kernspeicherabbild erstellt. 0
DOTNET_DbgMiniDumpType Der Typ des zu erfassenden Speicherabbilds. Weitere Informationen finden Sie unter Arten von Minidumps. 2 (Heap)
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>
DOTNET_CreateDumpDiagnostics Wenn die Variable auf 1 festgelegt ist, wird die Diagnoseprotokollierung des Speicherabbildprozesses aktiviert. 0
DOTNET_EnableCrashReport (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.
DOTNET_CreateDumpVerboseDiagnostics Wenn die Variable auf 1 festgelegt ist, wird die ausführliche Diagnoseprotokollierung des Speicherabbildprozesses aktiviert. 0
DOTNET_CreateDumpLogToFile 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.

Dateipfadvorlagen

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

Bezeichner value
%% 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.

value 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

Nur vollständige Dumps werden von den Einzeldatei- und nativen AOT-App-Modellen unterstützt.