Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 5902|Atsakyti: 1

[.NET branduolys] [Tikroji kova]. NET/C# programos gedimai ir išimtys automatiškai generuoja DMP iškelties failus

[Kopijuoti nuorodą]
Paskelbta 2022-11-6 22:41:42 | | | |
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_DbgEnableMiniDumpJei nustatyta 1, įgalinkite branduolio iškelties generavimą.0
COMPlus_DbgMiniDumpType ar DOTNET_DbgMiniDumpTypeSąvartyno tipas, kurį reikia surinkti. Daugiau informacijos rasite toliau pateiktoje lentelėje2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName arba DOTNET_DbgMiniDumpNameParaš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_CreateDumpDiagnosticsJei 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.




Ankstesnis:Išsamus "Discuz" priedų vaizdų, avataro nuotraukų ir albumų vaizdų saugojimo taisyklių paaiškinimas
Kitą:Praktinis veikimas: naudokite "BundleTransformer", kad pakeistumėte System.Web.Optimization
 Savininkas| Paskelbta 2022-11-6 22:44:06 |
Siųsti iškelties failus:

Paleidus programą, nustatykite, ar kataloge yra sugeneruotas iškelties failas, jei taip, pateikite failą į nurodytą sąsają ir ištrinkite failą.
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com