Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 5902|Antwort: 1

[.NET Core] [Tatsächlicher Kampf]. NET/C#-Anwendung stürzt ab und Ausnahmen generieren automatisch DMP-Dump-Dateien

[Link kopieren]
Veröffentlicht am 6.11.2022, 22:41:42 | | | |
Anforderungen: Bei der Entwicklung von Anwendungen mit .NET/C# ist es für einen Entwickler unmöglich, eine stabile und robuste Ausführung des Programms sicherzustellen, was mit der Codelogik des Entwicklers oder der laufenden Umgebung des Benutzers zusammenhängen kannEs gibt keine 100%ige Garantie, dass die von Ihnen entwickelte Anwendung problemlos istEs ist nicht schlimm, ein Problem zu haben, aber das Schlimme ist, dass es ein Problem gibt, das die Ursache nicht finden und lösen kann.

Wenn die Anwendung nicht wie erwartet ausgeführt wird und ein abnormaler Abschluss auftritt, wie kann dann automatisch eine DMP-Dump-Datei generiert werden, um das Problem zu beheben?
Ein Dump ist eine Datei, die einen Schnappschuss des Prozesses zum Zeitpunkt seiner Erstellung enthält und verwendet werden kann, um den Zustand der Anwendung zu überprüfen. Wenn es schwierig ist, einen Debugger an eine .NET-Anwendung wie eine Produktions- oder CI-Umgebung anzuhängen, können Sie Dumps verwenden, um die Anwendung zu debuggen. Die Verwendung von Dumps erfasst den Zustand problematischer Prozesse, und der Zustand kann direkt überprüft werden, ohne die Anwendung zu stoppen.

Sammle Müllablagerungen

Sie können Umweltvariablen verwenden, um Ihre Anwendung so zu konfigurieren, dass sie im Falle eines Ausfalls Dumps sammelt. Das ist hilfreich, wenn du die Ursache des Scheiterns wissen möchtest. Zum Beispiel hilft das Erfassen von Dumps, wenn eine Ausnahme ausgelöst wird, um Probleme zu erkennen, indem der App-Status überprüft wird, falls sie fehlschlägt.

Die folgende Tabelle zeigt die Umweltvariablen, mit denen Sie Ihre Anwendung so konfigurieren können, dass sie im Falle eines Ausfalls Dumps sammelt.

Umgebungsvariable
illustrieren
Vorgabe
COMPlus_DbgEnableMiniDump oder DOTNET_DbgEnableMiniDumpWenn auf 1 eingestellt, aktiviere die Generierung des Core-Dumps.0
COMPlus_DbgMiniDumpType oder DOTNET_DbgMiniDumpTypeDie Art von Müll, die man sammeln sollte. Siehe die untenstehende Tabelle für Details2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName oder DOTNET_DbgMiniDumpNameSchreibe den Dateipfad zum Dump. Stellen Sie sicher, dass der Benutzer, der den dotnet-Prozess ausführt, Schreibzugriff auf das angegebene Verzeichnis hat./tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics oder DOTNET_CreateDumpDiagnosticsWenn auf 1 gesetzt, aktiviere das Diagnoselogging für den Dump-Prozess.0
COMPlus_EnableCrashReport oder DOTNET_EnableCrashReport(Benötigt .NET 6 oder neuer) Wenn auf 1 gesetzt, erzeugt die Laufzeit einen JSON-formatierten Fehlerbericht, der Informationen über die Threads und Stack-Frames der fehlgeschlagenen Anwendung enthält. Der Name des Absturzberichts ist der Dump-Pfad/Name, der an .crashreport.json angehängt wurde.
COMPlus_CreateDumpVerboseDiagnostics oder DOTNET_CreateDumpVerboseDiagnostics(Benötigt .NET 7 oder neuer) Wenn auf 1 gesetzt, aktivieren Sie detailliertes Diagnoselogging für den Dump-Prozess.0
COMPlus_CreateDumpLogToFile oder DOTNET_CreateDumpLogToFile(.NET 7 oder später erforderlich) Der Dateipfad zur Diagnosenachricht sollte geschrieben werden. Wenn nicht gesetzt, wird eine Diagnosemeldung an die Konsole der fehlgeschlagenen Anwendung geschrieben.

Für diese Umweltvariablen standardisiert .NET 7 das Präfix DOTNET_ statt COMPlus_. Das Präfix COMPlus_ funktioniert jedoch weiterhin ordnungsgemäß. Wenn du es bistIn früheren Versionen der .NET-Laufzeit sollten Umweltvariablen weiterhin das COMPlus_-Präfix verwenden



Erstellen Sie einen neuen .NET Core 6 Anwendungstest

Verwenden Sie VS 2022, um einen neuen .NET Core 6 App-Test mit folgendem Code zu testen:

Starte das Programm mit dem cmd-Befehl, wie im untenstehenden Bild gezeigt:

COMPlus_EnableCrashReport=1
COMPlus_DbgEnableMiniDump=1
COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp"
COMPlus_CreateDumpDiagnostics=1
Unbearbeitete Ausnahme. System.Ausnahme: itsvse.com
   bei Programm. <Main>$(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9
[createdump] Minidump mit Heap schreiben, um C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp
[createdump] Dump erfolgreich geschrieben



Man sieht, dass das Programm nach einem abnormalen Absturz erfolgreich unter dem von uns angegebenen Verzeichnis verwendet wirdDer Dump .dmp Datei wird erzeugtWas die Analyse angeht, ist das eine andere Sache.

Windows Platform Universal-Einstellungen

In Windows kann Windows Error Reporting (WER) so konfiguriert werden, dass Dumps erzeugt werden, wenn eine Anwendung abstürzt.

Diese Methode funktioniert für alle Programme, nicht nur . .NET-Programme wie C++, Go usw.; Und und. NETTO. NET Core-Version

  • Öffne regedit.exe
  • Öffnen Sie das Verzeichnis HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
  • Erstelle einen KEY DumpFolder vom Typ REG_EXPAND_SZ, um das Verzeichnis zu konfigurieren, in dem die Dump-Dateien gespeichert sind.
  • Man kann auch einen KEY DumpCount vom Typ erstellen, REG_DWORD die Gesamtmenge der Dumps konfigurieren




Natürlich können Sie diese auch mit PowerShell-Befehlen konfigurieren:

Laut der obigen Konfiguration erstellt das Programm, wenn es abnormal ausgeht, einen Programm-Dump im Verzeichnis %LOCALAPPDATA%\CrashDumps.

Betriebsmittel:

Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.




Vorhergehend:Detaillierte Erklärung der Speicherregeln für Discuz-Anhangsbilder, Avatar-Bilder und Albumbilder
Nächster:Praktischer Betrieb: Verwenden Sie BundleTransformer als Ersatz für System.Web.Optimization
 Vermieter| Veröffentlicht am 6.11.2022, 22:44:06 |
Dump-Dateien senden:

Nachdem das Programm gestartet ist, bestimmen Sie, ob das Verzeichnis eine generierte Dump-Datei enthält, falls ja, senden Sie die Datei an die angegebene Schnittstelle und löschen Sie dann die Datei.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com