Reikalavimai: Kuriant programas naudojant .NET/C#, joks kūrėjas negali užtikrinti stabilaus ir patikimo programos vykdymo, kuris gali būti susijęs su kūrėjo kodo logika arba vartotojo veikiančia aplinkaNėra 100% garantijos, kad jūsų kuriama programa bus be problemųNėra baisu turėti problemą, bet baisiausia yra tai, kad yra problema, kuri negali išsiaiškinti priežasties ir išspręsti problemos.
Jei programa nevykdoma taip, kaip tikėtasi, ir įvyksta nenormalus išėjimas, kaip galima automatiškai sugeneruoti DMP iškelties failą, kad būtų pašalinta problema?
Iškeltis yra failas, kuriame yra proceso momentinė kopija, kai jis buvo sukurtas, ir kurį galima naudoti programos būsenai patikrinti. Kai sunku pridėti derintuvą prie .NET programos, pvz., gamybos ar CI aplinkos, galite naudoti iškeltis, kad derintumėte programą. Naudojant sąvartynus užfiksuojama probleminių procesų būsena, o būseną galima patikrinti tiesiogiai, nesustabdant programos.
Rinkti sąvartynus
Galite naudoti aplinkos kintamuosius, kad sukonfigūruotumėte programą rinkti iškeltis gedimo atveju. Tai naudinga, jei norite sužinoti gedimo priežastį. Pavyzdžiui, iškelčių fiksavimas, kai pateikiama išimtis, padeda nustatyti problemas tikrinant programos būseną, jei ji nepavyksta.
Toliau pateiktoje lentelėje pateikiami aplinkos kintamieji, kuriuos galite naudoti konfigūruodami programą rinkti iškeltis gedimo atveju.
aplinkos kintamasis | Iliustruoti | Numatytasis | | COMPlus_DbgEnableMiniDump ar DOTNET_DbgEnableMiniDump | Jei nustatyta 1, įgalinkite branduolio iškelties generavimą. | 0 | | COMPlus_DbgMiniDumpType ar DOTNET_DbgMiniDumpType | Sąvartyno tipas, kurį reikia surinkti. Daugiau informacijos rasite toliau pateiktoje lentelėje | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName arba DOTNET_DbgMiniDumpName | Parašykite failo kelią į iškeltį. Įsitikinkite, kad vartotojas, vykdantis dotnet procesą, turi rašymo prieigą prie nurodyto katalogo. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics arba DOTNET_CreateDumpDiagnostics | Jei nustatyta 1, įgalinkite iškelties proceso diagnostikos registravimą. | 0 | | COMPlus_EnableCrashReport ar DOTNET_EnableCrashReport | (Reikalinga .NET 6 arba naujesnė versija) Jei nustatyta 1, vykdymo laikas sugeneruoja JSON formato gedimo ataskaitą, kurioje pateikiama informacija apie nepavykusios programos gijas ir rietuvės kadrus. Strigties ataskaitos pavadinimas yra iškelties kelias / pavadinimas, pridėtas prie .crashreport.json. | | | COMPlus_CreateDumpVerboseDiagnostics arba DOTNET_CreateDumpVerboseDiagnostics | (Reikalinga .NET 7 arba naujesnė versija) Jei nustatyta 1, įgalinkite išsamų iškelties proceso diagnostikos registravimą. | 0 | | COMPlus_CreateDumpLogToFile arba DOTNET_CreateDumpLogToFile | (Reikalingas .NET 7 arba naujesnė versija) Turi būti parašytas failo kelias į diagnostikos pranešimą. Jei nenustatyta, diagnostikos pranešimas įrašomas į nepavykusios programos konsolę. | |
Šiems aplinkos kintamiesiems .NET 7 standartizuoja priešdėlį DOTNET_, o ne COMPlus_. Tačiau COMPlus_ priešdėlis ir toliau veiks tinkamai. Jei esateAnkstesnėse .NET vykdymo versijose aplinkos kintamieji vis tiek turėtų naudoti priešdėlį COMPlus_。
Naujo ".NET Core 6" programos testavimo kūrimas
Naudokite VS 2022, kad išbandytumėte naują ".NET Core 6" programos testą naudodami šį kodą:
Paleiskite programą naudodami komandą cmd, kaip parodyta paveikslėlyje žemiau:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Vartotojai\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Neapdorota išimtis. System.Exception: itsvse.com Programa. <Main>$(String[] args) C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9 [createdump] Minidump su krūva rašymas į failą C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Iškelti sėkmingai parašyta
Galite pamatyti, kad po to, kai programa sugenda neįprastai, ji sėkmingai patenka į mūsų nurodytą katalogąSugeneruotas iškelties .dmp failasKalbant apie tai, kaip jį analizuoti, tai kitas klausimas.
"Windows" platformos universalūs parametrai
"Windows" sistemoje "Windows" klaidų ataskaitas (WER) galima sukonfigūruoti taip, kad būtų generuojamos iškeltys, kai programa sugenda.
Šis metodas tinka visoms programoms, ne tik . .NET programos, tokios kaip C++, Go ir kt.; Ir ir. GRYNOJI. NET Core versija
- Atidarykite regedit.exe
- Atidarykite katalogą HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Sukurkite REG_EXPAND_SZ tipo KEY DumpFolder, kad sukonfigūruotumėte katalogą, kuriame saugomi iškelties failai
- Taip pat galite sukurti tipo KEY DumpCount REG_DWORD konfigūruoti bendrą iškeltų skaičių
Žinoma, juos taip pat galite sukonfigūruoti naudodami "PowerShell" komandas:
Pagal aukščiau pateiktą konfigūraciją, jei programa išeina neįprastai, ji sukurs programos iškeltį kataloge %LOCALAPPDATA%\CrashDumps.
Išteklių:
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
|