Prasības: Izstrādājot lietojumprogrammas, izmantojot .NET/C#, nevienam izstrādātājam nav iespējams nodrošināt stabilu un stabilu programmas izpildi, kas var būt saistīta ar izstrādātāja koda loģiku vai lietotāja darbības vidiNav 100% garantijas, ka jūsu izstrādātā lietojumprogramma būs bez problēmāmNav briesmīgi, ka ir problēma, bet briesmīgais ir tas, ka ir problēma, kas nevar noskaidrot cēloni un atrisināt problēmu.
Ja lietojumprogramma netiek izpildīta, kā paredzēts, un notiek neparasta izeja, kā var automātiski ģenerēt DMP izmetes failu, lai novērstu problēmu?
Izmete ir fails, kas satur procesa momentuzņēmumu, kad tas tika izveidots, un to var izmantot, lai pārbaudītu lietojumprogrammas stāvokli. Ja ir grūti pievienot atkļūdotāju .NET lietojumprogrammai, piemēram, ražošanas vai CI videi, lietojumprogrammas atkļūdošanai var izmantot izmetes. Izmantojot izgāztuves, tiek uztverts problemātisko procesu stāvoklis, un stāvokli var pārbaudīt tieši, nepārtraucot lietojumprogrammu.
Savākt izgāztuves
Vides mainīgos var izmantot, lai konfigurētu lietojumprogrammu izmetes apkopošanai kļūmes gadījumā. Tas ir noderīgi, ja vēlaties uzzināt kļūmes cēloni. Piemēram, izmetes tveršana, kad tiek izmests izņēmums, palīdz identificēt problēmas, pārbaudot programmas stāvokli, ja tas neizdodas.
Tālāk esošajā tabulā ir parādīti vides mainīgie, kurus var izmantot, lai konfigurētu lietojumprogrammu izmetes apkopošanai kļūmes gadījumā.
Vides mainīgais | Ilustrētu | Noklusējuma | | COMPlus_DbgEnableMiniDump vai DOTNET_DbgEnableMiniDump | Ja iestatīts uz 1, iespējojiet kodola izmetes ģenerēšanu. | 0 | | COMPlus_DbgMiniDumpType vai DOTNET_DbgMiniDumpType | Savācamās izgāztuves veids. Sīkāku informāciju skatiet tabulā | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName vai DOTNET_DbgMiniDumpName | Uzrakstiet faila ceļu uz izgāztuvi. Pārliecinieties, ka lietotājam, kas darbojas dotnet procesā, ir rakstīšanas piekļuve norādītajam direktorijam. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics vai DOTNET_CreateDumpDiagnostics | Ja iestatīts uz 1, iespējojiet diagnostikas reģistrēšanu izmetes procesam. | 0 | | COMPlus_EnableCrashReport vai DOTNET_EnableCrashReport | (Nepieciešams .NET 6 vai jaunāka versija) Ja iestatīts uz 1, izpildlaiks ģenerē JSON formāta kļūmes atskaiti, kurā ir iekļauta informācija par neveiksmīgās lietojumprogrammas pavedieniem un steka kadriem. Avārijas ziņojuma nosaukums ir izmetes ceļš/nosaukums, kas pievienots .crashreport.json. | | | COMPlus_CreateDumpVerboseDiagnostics vai DOTNET_CreateDumpVerboseDiagnostics | (Nepieciešams .NET 7 vai jaunāka versija) Ja iestatīts uz 1, iespējojiet detalizētu diagnostikas reģistrēšanu izmetes procesam. | 0 | | COMPlus_CreateDumpLogToFile vai DOTNET_CreateDumpLogToFile | (nepieciešams .NET 7 vai jaunāka versija) Jāraksta faila ceļš uz diagnostikas ziņojumu. Ja tas nav iestatīts, neveiksmīgās lietojumprogrammas konsolē tiek ierakstīts diagnostikas ziņojums. | |
Šiem vides mainīgajiem .NET 7 standartizē prefiksu DOTNET_, nevis COMPlus_. Tomēr COMPlus_ prefikss turpinās darboties pareizi. Ja esatIepriekšējās .NET izpildlaika versijās vides mainīgajiem joprojām jāizmanto prefikss COMPlus_。
Jaunas .NET Core 6 lietojumprogrammas testa izveide
Izmantojiet VS 2022, lai pārbaudītu jaunu .NET Core 6 lietotnes testu ar šādu kodu:
Sāciet programmu, izmantojot komandu cmd, kā parādīts zemāk redzamajā attēlā:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Lietotāji\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Neapstrādāts izņēmums. Sistēma.Izņēmums: itsvse.com pie programmas. <Main>$(String[] argumenti) C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9 [createdump] Minidump rakstīšana ar kaudzi failā C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Izgāztuve veiksmīgi uzrakstīta
Jūs varat redzēt, ka pēc tam, kad programma avarē neparasti, tā ir veiksmīgi zem mūsu norādītā direktorijaTiek ģenerēts .dmp faila izmetes failsKas attiecas uz to, kā to analizēt, tas ir cits jautājums.
Windows platformas universālie iestatījumi
Operētājsistēmā Windows kļūdu uzrādīšanu (WER) var konfigurēt tā, lai ģenerētu izmetes, kad avarē lietojumprogramma.
Šī metode darbojas visām programmām, ne tikai . .NET programmas, piemēram, C++, Go utt.; Un un. NETO. NET Core versija
- Atvērt regedit.exe
- Atveriet direktoriju HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Izveidojiet REG_EXPAND_SZ tipa KEY DumpFolder, lai konfigurētu direktoriju, kurā tiek glabāti izmetes faili
- Varat arī izveidot tipa KEY DumpCount REG_DWORD konfigurēt kopējo izmetes apjomu
Protams, tos var konfigurēt arī, izmantojot PowerShell komandas:
Saskaņā ar iepriekš minēto konfigurāciju, ja programma iziet neparasti, tā izveidos programmas izmeti direktorijā %LOCALAPPDATA%\CrashDumps.
Resursu:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
|