Zahteve: Pri razvoju aplikacij z uporabo .NET/C# je nemogoče, da bi kateri koli razvijalec zagotovil stabilno in robustno izvajanje programa, kar je lahko povezano z logiko programerske kode ali uporabnikovim okoljem za zagon.Ni 100 % zagotovila, da bo aplikacija, ki jo razvijete, brez težavNi grozno imeti problem, a grozno je, da obstaja problem, ki ne more najti vzroka in rešiti problema.
Če aplikacija ni zagnana po pričakovanjih in pride do nenavadnega izhoda, kako lahko samodejno ustvarimo DMP datoteko za odpravo težave?
Izpis je datoteka, ki vsebuje posnetek procesa ob njegovem ustvarjanju in se lahko uporablja za preverjanje stanja aplikacije. Ko je težko priklopiti razhroščevalnik na .NET aplikacijo, kot je produkcijsko ali CI okolje, lahko uporabite izpiske za odpravljanje napak v aplikaciji. Uporaba dumpov zajame stanje problematičnih procesov, stanje pa je mogoče preveriti neposredno brez ustavljanja aplikacije.
Zbiraj odlagališča
Okoljske spremenljivke lahko uporabite za konfiguracijo aplikacije, da zbira izpiske v primeru okvare. To je koristno, če želite izvedeti vzrok okvare. Na primer, zajemanje izpiskov, ko je odvržena izjema, pomaga prepoznati težave s preverjanjem stanja aplikacije, če ta ne uspe.
Naslednja tabela prikazuje okoljske spremenljivke, ki jih lahko uporabite za konfiguracijo vaše aplikacije za zbiranje dumpov v primeru okvare.
okoljske spremenljivke | Ponazoritev | Privzeto | | COMPlus_DbgEnableMiniDump ali DOTNET_DbgEnableMiniDump | Če je nastavljeno na 1, omogočite generiranje izpusta jedra. | 0 | | COMPlus_DbgMiniDumpType ali DOTNET_DbgMiniDumpType | Vrsta odlagališča za zbiranje. Za podrobnosti glejte spodnjo tabelo | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName ali DOTNET_DbgMiniDumpName | Zapiši pot datoteke v izpis. Poskrbite, da ima uporabnik, ki izvaja dotnet proces, dostop do pisanja v določeno imenik. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics ali DOTNET_CreateDumpDiagnostics | Če je nastavljeno na 1, omogočite diagnostično beleženje za postopek izpisa. | 0 | | COMPlus_EnableCrashReport ali DOTNET_EnableCrashReport | (Zahteva .NET 6 ali novejšo) Če je nastavljeno na 1, čas izvajanja generira poročilo o napakah v JSON-formatu, ki vključuje informacije o nitih in okvirjih sklada neuspešne aplikacije. Ime poročila o sesutju je pot/ime izpiska, ki je dodano .crashreport.json. | | | COMPlus_CreateDumpVerboseDiagnostics ali DOTNET_CreateDumpVerboseDiagnostics | (Zahteva .NET 7 ali novejšo) Če je nastavljen na 1, omogočite podrobno diagnostično beleženje za postopek izpisa. | 0 | | COMPlus_CreateDumpLogToFile ali DOTNET_CreateDumpLogToFile | (zahtevana .NET 7 ali novejša) Pot do diagnostičnega sporočila naj bo zapisana. Če ni nastavljeno, se v konzolo neuspešne aplikacije zapiše diagnostično sporočilo. | |
Za te okoljske spremenljivke .NET 7 standardizira predpono DOTNET_ namesto COMPlus_. Vendar bo predpona COMPlus_ še naprej delovala pravilno. Če siV prejšnjih različicah .NET izvajanja naj bi okoljske spremenljivke še vedno uporabljale predpono COMPlus_。
Ustvarite nov test aplikacije .NET Core 6
Uporabite VS 2022 za testiranje novega testa aplikacije .NET Core 6 z naslednjo kodo:
Program zaženite z ukazom cmd, kot je prikazano na spodnji sliki:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Neobdelana izjema. Sistem.Izjema: itsvse.com v programu. <Main>$(String[] args) v C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:vrstica 9 [createdump] Pisanje minidumpa s kopico v datoteko C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Dump uspešno napisan
Lahko vidite, da je program po nenormalnem sesutju uspešno v imeniku, ki smo ga določiliDatoteka za izpis .dmp se generiraKar zadeva analizo, je to druga zgodba.
Univerzalne nastavitve Windows platforme
V Windows je mogoče Windows Error Reporting (WER) nastaviti tako, da ob sesutju aplikacije generira izpiske.
Ta metoda deluje za vse programe, ne samo za . .NET programi, kot so C++, Go itd.; In in. MREŽA. NET Core različica
- Odpri regedit.exe
- Odprite mapo HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Ustvarite mapo KEY DumpFolder tipa REG_EXPAND_SZ za konfiguracijo mape, kjer so shranjene datoteke za izpis
- Lahko tudi ustvarite KEY DumpCount tipa REG_DWORD nastavite skupno število dumpov
Seveda jih lahko konfigurirate tudi s PowerShell ukazi:
Po zgornji konfiguraciji, če program nenavadno zapre, ustvari izpust programa v mapi %LOCALAPPDATA%\CrashDumps.
Sredstva:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
|