Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 5902|Odgovoriti: 1

[.NET Core] [Dejanski boj]. Sesutja NET/C# aplikacij in izjeme samodejno ustvarijo DMP dump datoteke

[Kopiraj povezavo]
Objavljeno 6. 11. 2022 ob 22:41:42 | | | |
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_DbgMiniDumpTypeVrsta odlagališča za zbiranje. Za podrobnosti glejte spodnjo tabelo2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName ali DOTNET_DbgMiniDumpNameZapiš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.




Prejšnji:Podrobna razlaga pravil shranjevanja za slike pripon v Discuzu, slike avatarjev in slike albumov
Naslednji:Praktično delovanje: Uporabite BundleTransformer za zamenjavo System.Web.Optimization
 Najemodajalec| Objavljeno 2022-11-6 22:44:06 |
Pošiljanje datotek za izločanje podatkov:

Ko se program zažene, ugotovite, ali ima mapa generirano datoteko za izpis, če jo ima, datoteko oddajte na določen vmesnik in nato datoteko izbrišite.
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com