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 |
Nur vollständige Dumps werden von den Einzeldatei- und nativen AOT-App-Modellen unterstützt.