|
|
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_DbgEnableMiniDump | Hvis satt til 1, aktiver generering av core dump. | 0 | | COMPlus_DbgMiniDumpType eller DOTNET_DbgMiniDumpType | Typen dump man skal hente. Se tabellen nedenfor for detaljer | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName eller DOTNET_DbgMiniDumpName | Skriv 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_CreateDumpDiagnostics | Hvis 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 albumbilderNeste:Praktisk drift: Bruk BundleTransformer for å erstatte System.Web.Optimization
|