See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 5902|Vastuse: 1

[.NET tuum] [Päris lahing]. NET/C# rakenduse krahhid ja erandid genereerivad automaatselt DMP dump-faile

[Kopeeri link]
Postitatud 2022-11-6 22:41:42 | | | |
Nõuded: .NET/C# abil rakendusi arendades ei ole ükski arendaja suutnud tagada programmi stabiilset ja usaldusväärset täitmist, mis võib olla seotud arendaja koodiloogika või kasutaja töökeskkonnagaPole 100% garantiid, et sinu arendatud rakendus on probleemivabaProbleem ei ole kohutav, aga kohutav on see, et on probleem, mis ei suuda põhjust leida ega lahendada.

Kui rakendust ei käivitata ootuspäraselt ja tekib ebanormaalne väljumine, kuidas saab DMP dump-faili automaatselt genereerida probleemi lahendamiseks?
Dump on fail, mis sisaldab protsessi hetkepilti selle loomise ajal ja mida saab kasutada rakenduse oleku kontrollimiseks. Kui on keeruline siduda silurit .NET rakendusega, näiteks tootmis- või CI keskkonnaga, saad rakenduse silumiseks kasutada dumpe. Dumpide kasutamine jäädvustab probleemsete protsesside seisundi ning olekut saab otse kontrollida ilma rakendust peatamata.

Koguge prügimäed

Keskkonnamuutujate abil saad seadistada oma rakenduse koguma dumpe rikke korral. See on kasulik, kui tahad teada rikke põhjust. Näiteks dump'ide püüdmine erindi korral aitab tuvastada probleeme, kontrollides rakenduse olekut, kui see ebaõnnestub.

Järgmine tabel näitab keskkonnamuutujaid, mida saate kasutada oma rakenduse seadistamiseks koguma dumpe rikke korral.

Keskkonnamuutuja
Illustreerida
Vaikimisi
COMPlus_DbgEnableMiniDump või DOTNET_DbgEnableMiniDumpKui seade on 1, luba tuuma dump'i genereerimine.0
COMPlus_DbgMiniDumpType või DOTNET_DbgMiniDumpTypeSelline prügimägi, mida koguda. Vaata allolevat tabelit üksikasjade jaoks2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName või DOTNET_DbgMiniDumpNameKirjuta failitee prügikasti. Veendu, et dotnet-protsessi käivitaval kasutajal oleks kirjutamisõigus määratud kataloogile./tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics või DOTNET_CreateDumpDiagnosticsKui seade on 1, luba diagnostika logimine dump-protsessi jaoks.0
COMPlus_EnableCrashReport või DOTNET_EnableCrashReport(Vajab .NET 6 või uuemat) Kui käivitamine on seatud väärtusele 1, genereerib käitusaeg JSON-formaadis tõrkearuande, mis sisaldab teavet vigase rakenduse lõimede ja virnaraamide kohta. Krahhiaruande nimi on .crashreport.json juurde lisatud dump-tee/nimi.
COMPlus_CreateDumpVerboseDiagnostics või DOTNET_CreateDumpVerboseDiagnostics(Vajab .NET 7 või uuemat) Kui seade on 1, luba üksikasjalik diagnostika logimine dump-protsessi jaoks.0
COMPlus_CreateDumpLogToFile või DOTNET_CreateDumpLogToFile(.NET 7 või uuem vajalik) Diagnostikasõnumi failitee tuleks kirjutada. Kui seda pole seadistatud, kirjutatakse vigase rakenduse konsoolile diagnostikateade.

Nende keskkonnamuutujate puhul standardiseerib .NET 7 eesliite DOTNET_ COMPlus_ asemel. Kuid COMPlus_ prefiks töötab endiselt korralikult. Kui sa oledVarasemates .NET runtime'i versioonides pidid keskkonnamuutujad kasutama endiselt COMPlus_ eesliitet



Loo uus .NET Core 6 rakendustest

Kasuta VS 2022, et testida uut .NET Core 6 rakendustesti järgmise koodiga:

Käivita programm käsuga cmd, nagu alloleval pildil näidatud:

COMPlus_EnableCrashReport=1
COMPlus_DbgEnableMiniDump=1
COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp"
COMPlus_CreateDumpDiagnostics=1
Lahendamata erand. Süsteem.Erand: itsvse.com
   Programmis. <Main>$(String[] args) C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:real 9
[createdump] Kirjutan minidumpi kuhjaga faili C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp
[createdump] Dump edukalt kirjutatud



Näete, et pärast programmi ebanormaalset krahhi on see edukalt määratud kataloogisDump .dmp fail genereeritakseKuidas seda analüüsida, siis see on teine teema.

Windows Platformi universaalsed seaded

Windowsis saab Windowsi vearaportit (WER) seadistada nii, et see genereeriks dumpe, kui rakendus kokku jookseb.

See meetod töötab kõigi programmide puhul, mitte ainult . .NET programmid, nagu C++, Go jne; Ja ja. NET. NET Core versioon

  • Avatud regedit.exe
  • Ava kataloog HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
  • Loo KEY dumpFolder tüübiga REG_EXPAND_SZ, et seadistada kausta, kus dump-failid asuvad
  • Samuti saab luua KEY DumpCounti tüübiga REG_DWORD seadistada dumpide koguarvu




Loomulikult saab neid seadistada ka PowerShelli käskude abil:

Ülaltoodud konfiguratsiooni kohaselt, kui programm väljub ebanormaalselt, loob ta programmidumpi kaustas %LOCALAPPDATA%\CrashDumps.

Ressursse:

Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.




Eelmine:Discuzi manuste piltide, avataripiltide ja albumipiltide salvestusreeglite üksikasjalik selgitus
Järgmine:Praktiline töö: Kasuta BundleTransformerit System.Web.Optimeerimise asendamiseks
 Üürileandja| Postitatud 2022-11-6 22:44:06 |
Saada dump-failid:

Pärast programmi käivitamist määra, kas kataloogil on genereeritud dump-fail, kui on, esita fail määratud liidesesse ja kustuta fail.
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com