Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 5902|Răspunde: 1

[.NET Core] [Luptă propriu-zisă]. Aplicațiile NET/C# se blochează și excepțiile generează automat fișiere DMP dump

[Copiază linkul]
Postat la 6-11-2022 22:41:42 | | | |
Cerințe: Când se dezvoltă aplicații folosind .NET/C#, este imposibil ca vreun dezvoltator să asigure o execuție stabilă și robustă a programului, ceea ce poate fi legat de logica codului dezvoltatorului sau de mediul de rulare al utilizatoruluiNu există nicio garanție 100% că aplicația pe care o dezvolți va fi fără problemeNu este groaznic să ai o problemă, dar partea groaznică este că există o problemă care nu poate găsi cauza și să o rezolve.

Dacă aplicația nu este executată conform așteptărilor și apare o ieșire anormală, cum poate fi generat automat un fișier dump DMP pentru a depana problema?
Un dump este un fișier care conține o imagine instantanee a procesului la momentul creării acestuia și poate fi folosit pentru a verifica starea aplicației. Când este dificil să atașezi un debugger la o aplicație .NET, cum ar fi un mediu de producție sau CI, poți folosi dump-uri pentru a depana aplicația. Folosirea dump-urilor surprinde starea proceselor problematice, iar starea poate fi verificată direct fără a opri aplicația.

Colectarea dump-urilor

Poți folosi variabilele de mediu pentru a-ți configura aplicația să colecteze dump-uri în caz de defecțiune. Acest lucru este util dacă vrei să afli cauza eșecului. De exemplu, capturarea dump-urilor când o excepție este aruncată ajută la identificarea problemelor prin verificarea stării aplicației dacă aceasta eșuează.

Tabelul următor arată variabilele de mediu pe care le poți folosi pentru a-ți configura aplicația să colecteze dump-uri în caz de defectare.

Variabila de mediu
ilustra
Implicit
COMPlus_DbgEnableMiniDump sau DOTNET_DbgEnableMiniDumpDacă este setat la 1, activează generarea de core dump.0
COMPlus_DbgMiniDumpType sau DOTNET_DbgMiniDumpTypeTipul de groapă de depozit de colectat. Vezi tabelul de mai jos pentru detalii2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName sau DOTNET_DbgMiniDumpNameScrie calea fișierului către dump. Asigurați-vă că utilizatorul care rulează procesul dotnet are acces de scriere la directorul specificat./tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics sau DOTNET_CreateDumpDiagnosticsDacă este setat la 1, activează logarea diagnosticului pentru procesul de dump.0
COMPlus_EnableCrashReport sau DOTNET_EnableCrashReport(Necesită .NET 6 sau versiune ulterioară) Dacă este setat la 1, runtime-ul generează un raport de eșec format JSON care include informații despre firele de execuție și cadrele de stivă ale aplicației eșuate. Numele raportului de accident este calea/numele de dump adăugat la .crashreport.json.
COMPlus_CreateDumpVerboseDiagnostics sau DOTNET_CreateDumpVerboseDiagnostics(Necesită .NET 7 sau mai târziu) Dacă este setat la 1, activați jurnalizarea detaliată de diagnostic pentru procesul de dump.0
COMPlus_CreateDumpLogToFile sau DOTNET_CreateDumpLogToFile(.NET 7 sau mai târziu necesar) Calea fișierului către mesajul de diagnostic trebuie scrisă. Dacă nu este setat, un mesaj de diagnostic este scris pe consola aplicației eșuate.

Pentru aceste variabile de mediu, .NET 7 standardizează prefixul DOTNET_ în loc de COMPlus_. Totuși, prefixul COMPlus_ va continua să funcționeze corect. Dacă eștiÎn versiunile anterioare ale runtime-ului .NET, variabilele de mediu ar trebui să folosească în continuare prefixul COMPlus_



Creează un nou test de aplicație .NET Core 6

Folosește VS 2022 pentru a testa un nou test de aplicație .NET Core 6 cu următorul cod:

Pornește programul folosind comanda cmd, așa cum se arată în imaginea de mai jos:

COMPlus_EnableCrashReport=1
COMPlus_DbgEnableMiniDump=1
COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp"
COMPlus_CreateDumpDiagnostics=1
Excepție nerezolvată. Sistem.Excepție: itsvse.com
   la Program. <Main>$(String[] args) în C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9
[createdump] Scrierea minidump-ului cu heap către fișierul C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp
[createdump] Dump scris cu succes



Poți vedea că, după ce programul se blochează anormal, acesta are succes în directorul specificatFișierul .dmp dump este generatÎn ceea ce privește modul de analiză, este o altă poveste.

Setări universale ale platformei Windows

În Windows, Windows Error Reporting (WER) poate fi configurat să genereze dump-uri atunci când o aplicație se blochează.

Această metodă funcționează pentru toate programele, nu doar pentru . programe .NET, precum C++, Go etc.; Și și. NET. Versiunea NET Core

  • Deschide regedit.exe
  • Deschide directorul HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
  • Creează un KEY DumpFolder de tip REG_EXPAND_SZ pentru a configura directorul unde sunt stocate fișierele dump
  • Poți crea și un KEY DumpCount de tip REG_DWORD configura numărul total de dump-uri




Desigur, poți configura și acestea folosind comenzi PowerShell:

Conform configurației de mai sus, dacă programul iese anormal, va crea un dump de program în directorul %LOCALAPPDATA%\CrashDumps.

Resurse:

Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.




Precedent:Explicație detaliată a regulilor de stocare pentru imaginile de atașament Discuz, imaginile avatarului și imaginile albumului
Următor:Funcționare practică: Folosiți BundleTransformer pentru a înlocui System.Web.Optimization
 Proprietarul| Postat pe 2022-11-6 22:44:06 |
Trimite fișiere dump:

După ce programul pornește, determină dacă directorul are un fișier dump generat, dacă da, trimite fișierul către interfața specificată și apoi șterge fișierul.
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com