Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 5902|Svare: 1

[.NET Core] [Faktisk kamp]. NET/C#-applikasjonen krasjer og unntak genererer automatisk DMP-dumpfiler

[Kopier lenke]
Publisert 6.11.2022 22:41:42 | | | |
Krav: Når man utvikler applikasjoner med .NET/C#, er det umulig for noen utvikler å sikre stabil og robust kjøring av programmet, noe som kan være relatert til utviklerens kodelogikk eller brukerens kjørende miljøDet er ingen 100 % garanti for at applikasjonen du utvikler vil være problemfriDet er ikke forferdelig å ha et Problem, men det forferdelige er at det finnes et problem som ikke kan finne årsaken og løse det.

Hvis applikasjonen ikke kjøres som forventet og en unormal avslutning skjer, hvordan kan en DMP-dumpfil automatisk genereres for å feilsøke problemet?
En dump er en fil som inneholder et øyeblikksbilde av prosessen da den ble opprettet, og kan brukes til å sjekke tilstanden til applikasjonen. Når det er vanskelig å koble en debugger til en .NET-applikasjon, som et produksjons- eller CI-miljø, kan du bruke dumps for å feilsøke applikasjonen. Bruk av dumps fanger opp tilstanden til problematiske prosesser, og tilstanden kan sjekkes direkte uten å stoppe applikasjonen.

Samle søppelfyllinger

Du kan bruke miljøvariabler for å konfigurere applikasjonen din til å samle dumper ved en feil. Dette er nyttig hvis du vil vite årsaken til feilen. For eksempel hjelper det å fange dumps når et unntak kastes med å identifisere problemer ved å sjekke appens tilstand hvis den feiler.

Tabellen nedenfor viser miljøvariablene du kan bruke for å konfigurere applikasjonen til å samle dumps ved en feil.

Miljøvariabel
illustrere
Standard
COMPlus_DbgEnableMiniDump eller DOTNET_DbgEnableMiniDumpHvis satt til 1, aktiver generering av core dump.0
COMPlus_DbgMiniDumpType eller DOTNET_DbgMiniDumpTypeTypen dump man skal hente. Se tabellen nedenfor for detaljer2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName eller DOTNET_DbgMiniDumpNameSkriv filstien til dumpen. Sørg for at brukeren som kjører dotnet-prosessen har skrivetilgang til den angitte katalogen./tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics eller DOTNET_CreateDumpDiagnosticsHvis satt til 1, aktiver diagnostisk logging for dump-prosessen.0
COMPlus_EnableCrashReport eller DOTNET_EnableCrashReport(Krever .NET 6 eller nyere) Hvis satt til 1, genererer kjøretiden en JSON-formatert feilrapport som inkluderer informasjon om trådene og stakkrammene til den mislykkede applikasjonen. Krasjrapportens navn er dump-stien/navnet lagt til .crashreport.json.
COMPlus_CreateDumpVerboseDiagnostics eller DOTNET_CreateDumpVerboseDiagnostics(Krever .NET 7 eller nyere) Hvis satt til 1, aktiver detaljert diagnostisk logging for dump-prosessen.0
COMPlus_CreateDumpLogToFile eller DOTNET_CreateDumpLogToFile(.NET 7 eller nyere kreves) Filstien til diagnosemeldingen skal skrives. Hvis det ikke er satt, skrives en diagnostisk melding til konsollen til det mislykkede programmet.

For disse miljøvariablene standardiserer .NET 7 prefikset DOTNET_ i stedet for COMPlus_. Likevel vil prefikset COMPlus_ fortsette å fungere som det skal. Hvis du erI tidligere versjoner av .NET-kjøretiden skal miljøvariabler fortsatt bruke prefikset COMPlus_



Opprett en ny .NET Core 6-applikasjonstest

Bruk VS 2022 for å teste en ny .NET Core 6-apptest med følgende kode:

Start programmet med cmd-kommandoen, som vist på bildet under:

COMPlus_EnableCrashReport=1
COMPlus_DbgEnableMiniDump=1
COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp"
COMPlus_CreateDumpDiagnostics=1
Unntak for ubehandlet. System. Unntak: itsvse.com
   på Program. <Main>$(String[] args) i C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:linje 9
[createdump] Skriver minidump med heap for å file C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp
[createdump] Dump vellykket skrevet



Du kan se at etter at programmet krasjer unormalt, er det i katalogen vi spesifisererDumpen .dmp filen genereresNår det gjelder hvordan man analyserer det, er det en annen sak.

Windows Platform universelle innstillinger

I Windows kan Windows Feilrapportering (WER) konfigureres til å generere dumps når et program krasjer.

Denne metoden fungerer for alle programmer, ikke bare . .NET-programmer, som C++, Go, osv.; Og og. NETT. NET Core-versjonen

  • Åpne regedit.exe
  • Åpne mappen HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Feilrapportering\LocalDumps
  • Opprett en KEY DumpFolder av typen REG_EXPAND_SZ for å konfigurere katalogen der dumpfilene lagres
  • Du kan også lage en KEY DumpCount av typen REG_DWORD konfigurere totalt antall dumps




Selvfølgelig kan du også konfigurere disse med PowerShell-kommandoer:

I henhold til konfigurasjonen ovenfor, hvis programmet avsluttes unormalt, vil det lage en programdump i %LOCALAPPDATA%\CrashDumps-katalogen.

Ressurser:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.




Foregående:Detaljert forklaring av lagringsreglene for Discuz-vedleggsbilder, avatarbilder og albumbilder
Neste:Praktisk drift: Bruk BundleTransformer for å erstatte System.Web.Optimization
 Vert| Publisert 6.11.2022 kl. 22:44:06 |
Send dumpfiler:

Etter at programmet har startet, avgjør om katalogen har en generert dumpfil, i så fall sender du filen til det angitte grensesnittet, og sletter deretter filen.
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com