Požiadavky: Pri vývoji aplikácií s použitím .NET/C# nie je možné, aby ktorýkoľvek vývojár zabezpečil stabilné a robustné vykonávanie programu, čo môže súvisieť s logikou kódu vývojára alebo bežiacim prostredím používateľaNie je 100% zaručené, že aplikácia, ktorú vyvíjate, bude bez problémovNie je zlé mať problém, ale hrozné je, že existuje problém, ktorý nedokáže nájsť príčinu a vyriešiť ho.
Ak aplikácia nie je spustená podľa očakávania a dôjde k abnormálnemu ukončeniu, ako môže byť automaticky vygenerovaný DMP dump súbor na riešenie problému?
Výpis je súbor, ktorý obsahuje snímku procesu pri jeho vytvorení a môže sa použiť na kontrolu stavu aplikácie. Keď je ťažké pripojiť debugger k .NET aplikácii, napríklad produkčnému alebo CI prostrediu, môžete použiť dumpy na ladenie aplikácie. Použitie výpisov zachytí stav problematických procesov a stav je možné skontrolovať priamo bez zastavenia aplikácie.
Zber výpisov
Môžete použiť environmentálne premenné na konfiguráciu aplikácie tak, aby v prípade zlyhania zbierala výpisy. To je užitočné, ak chcete vedieť príčinu poruchy. Napríklad zachytávanie výpisov pri vyhodení výnimky pomáha identifikovať problémy kontrolou stavu aplikácie, ak zlyhá.
Nasledujúca tabuľka ukazuje environmentálne premenné, ktoré môžete použiť na konfiguráciu aplikácie na zber výpisov v prípade zlyhania.
Premenné | ilustrovať | Predvolený | | COMPlus_DbgEnableMiniDump alebo DOTNET_DbgEnableMiniDump | Ak je nastavený na 1, zapni generovanie dumpu jadra. | 0 | | COMPlus_DbgMiniDumpType alebo DOTNET_DbgMiniDumpType | Typ skládky, ktorú treba zbierať. Podrobnosti nájdete v tabuľke nižšie | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName alebo DOTNET_DbgMiniDumpName | Zapíšte cestu k súboru do dumpu. Uistite sa, že používateľ spúšťajúci dotnet proces má zápisový prístup k určenému adresáru. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics alebo DOTNET_CreateDumpDiagnostics | Ak je nastavený na 1, zapnite diagnostické logovanie pre proces výpisu. | 0 | | COMPlus_EnableCrashReport alebo DOTNET_EnableCrashReport | (Vyžaduje .NET 6 alebo novší) Ak je nastavené na 1, runtime vygeneruje správu o zlyhaní vo formáte JSON, ktorá obsahuje informácie o vláknach a zásobníkových rámcoch zlyhanej aplikácie. Názov správy o páde je cesta/názov výpisu pripojený k .crashreport.json. | | | COMPlus_CreateDumpVerboseDiagnostics alebo DOTNET_CreateDumpVerboseDiagnostics | (Vyžaduje .NET 7 alebo novší) Ak je nastavený na 1, povoľte detailné diagnostické logovanie pre proces výpisu. | 0 | | COMPlus_CreateDumpLogToFile alebo DOTNET_CreateDumpLogToFile | (vyžaduje sa .NET 7 alebo novší) Cesta k diagnostickej správe by mala byť zapísaná. Ak nie je nastavené, do konzoly zlyhanej aplikácie sa zapíše diagnostická správa. | |
Pre tieto environmentálne premenné štandardizuje .NET 7 prefix DOTNET_ namiesto COMPlus_. Avšak predpona COMPlus_ bude naďalej správne fungovať. Ak steV skorších verziách .NET runtime by premenné prostredia mali stále používať prefix COMPlus_。
Vytvorte nový test aplikácie .NET Core 6
Použite VS 2022 na testovanie novej aplikácie .NET Core 6 s nasledujúcim kódom:
Spustite program pomocou príkazu cmd, ako je znázornené na obrázku nižšie:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Neriešená výnimka. Systém.Výnimka: itsvse.com v programe. <Main>$(String[] args) v C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:riadok 9 [createdump] Zápis minidumpu s haldou do súboru C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Dump úspešne napísaný
Vidíte, že po abnormálnom páde programu je úspešne umiestnený v adresári, ktorý sme určiliSúbor dump .dmp sa generujeČo sa týka jeho analýzy, je to iná vec.
Univerzálne nastavenia platformy Windows
Vo Windows je možné Windows Error Reporting (WER) nakonfigurovať tak, aby generoval výpisy pri páde aplikácie.
Táto metóda funguje pre všetky programy, nielen pre . .NET programy, ako C++, Go a podobne; A a. SIEŤ. Verzia NET Core
- Otvorte regedit.exe
- Otvorte adresár HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Vytvorte KEY DumpFolder typu REG_EXPAND_SZ na konfiguráciu adresára, kde sú uložené dump súbory
- Môžete tiež vytvoriť KEY DumpCount typu REG_DWORD nastaviť celkový počet dumpov
Samozrejme, tieto môžete tiež nakonfigurovať pomocou PowerShell príkazov:
Podľa vyššie uvedenej konfigurácie, ak program abnormálne ukončí, vytvorí program dump v adresári %LOCALAPPDATA%\CrashDumps.
Zdroje:
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
|