Vaatimukset: Kun kehitetään sovelluksia .NET/C#:lla, kukaan kehittäjä ei pysty varmistamaan ohjelman vakaata ja luotettavaa suoritusta, mikä voi liittyä kehittäjän koodilogiikkaan tai käyttäjän suoritusympäristöönEi ole 100 % takeita siitä, että kehittämäsi sovellus on ongelmatonEi ole kamalaa, että ongelma on olemassa, mutta kauheaa on, että on olemassa ongelma, joka ei pysty selvittämään syytä ja ratkaisemaan sitä.
Jos sovellusta ei suoriteta odotetusti ja poikkeava poistuminen tapahtuu, miten DMP-dump-tiedosto voidaan automaattisesti luoda ongelman ratkaisemiseksi?
Dump on tiedosto, joka sisältää tilannekuvan prosessista sen luomishetkellä ja jota voidaan käyttää sovelluksen tilan tarkistamiseen. Kun debuggerin liittäminen .NET-sovellukseen, kuten tuotanto- tai CI-ympäristöön, on vaikeaa, voit käyttää dumppeja sovelluksen virheenkorjaukseen. Dumpien käyttö tallentaa ongelmallisten prosessien tilan, ja tila voidaan tarkistaa suoraan keskeyttämättä sovellusta.
Kerää dumppauksia
Voit käyttää ympäristömuuttujia konfiguroidaksesi sovelluksesi keräämään dumppeja vian sattuessa. Tämä on hyödyllistä, jos haluat tietää vian syyn. Esimerkiksi dumpien kaappaaminen, kun poikkeus heitetään, auttaa tunnistamaan ongelmia tarkistamalla sovelluksen tilan, jos se epäonnistuu.
Seuraava taulukko näyttää ympäristömuuttujat, joilla voit konfiguroida sovelluksesi keräämään dumppeja vian sattuessa.
ympäristömuuttuja | havainnollistaa | Laiminlyönti | | COMPlus_DbgEnableMiniDump vai DOTNET_DbgEnableMiniDump | Jos asetuksena on 1, ota ytimen dump-generointi käyttöön. | 0 | | COMPlus_DbgMiniDumpType vai DOTNET_DbgMiniDumpType | Sellainen kaatopaikka, jonka pitäisi kerätä. Katso alla oleva taulukko lisätietoja varten | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName vai DOTNET_DbgMiniDumpName | Kirjoita tiedostopolku dumpiin. Varmista, että dotnet-prosessia ajavalla käyttäjällä on kirjoitusoikeus määriteltyyn hakemistoon. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics vai DOTNET_CreateDumpDiagnostics | Jos asetettu arvoon 1, ota diagnostiikkalokitus käyttöön dump-prosessille. | 0 | | COMPlus_EnableCrashReport vai DOTNET_EnableCrashReport | (Vaatii .NET 6:n tai uudemman) Jos ajonaikainen tiedosto on asetettu arvoon 1, suoritusaika tuottaa JSON-muotoisen vikaraportin, joka sisältää tietoa epäonnistuneen sovelluksen säikeistä ja pinokehyksistä. Kaatumisraportin nimi on .crashreport.json liitetty dump-polku/nimi. | | | COMPlus_CreateDumpVerboseDiagnostics vai DOTNET_CreateDumpVerboseDiagnostics | (Vaatii .NET 7:n tai uudemman) Jos asetus on 1, ota käyttöön yksityiskohtainen diagnostiikkalokki dump-prosessille. | 0 | | COMPlus_CreateDumpLogToFile vai DOTNET_CreateDumpLogToFile | (.NET 7 tai uudempi vaaditaan) Tiedostopolku diagnostiikkaviestiin tulee kirjoittaa. Jos sitä ei ole asetettu, vikaantuneen sovelluksen konsolille kirjoitetaan diagnostiikkaviesti. | |
Näille ympäristömuuttujille .NET 7 standardisoi etuliitteen DOTNET_ COMPlus_:n sijaan. Kuitenkin COMPlus_-etuliite toimii edelleen asianmukaisesti. Jos oletAiemmissa .NET-ajonaikaisissa versioissa ympäristömuuttujien tulisi edelleen käyttää COMPlus_-etuliitettä。
Luo uusi .NET Core 6 -sovellustesti
Käytä VS 2022:ta testataksesi uutta .NET Core 6 -sovellustestiä seuraavalla koodilla:
Käynnistä ohjelma cmd-komennolla, kuten alla olevassa kuvassa näkyy:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Käsittelemätön poikkeus. System.Poikkeus: itsvse.com ohjelmassa. <Main>$(String[] args) muodossa C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:rivi 9 [createdump] Kirjoitetaan minidump heapilla tiedostoon C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Dump onnistuneesti kirjoitettu
Näet, että kun ohjelma kaatuu epänormaalisti, se onnistuu valitsemallamme hakemistollaDump .dmp tiedosto luodaanMitä tulee siihen, miten sitä analysoidaan, se on eri asia.
Windows Platformin yleisasetukset
Windowsissa Windowsin virheraportointi (WER) voidaan konfiguroida generoimaan dumppeja sovelluksen kaatuessa.
Tämä menetelmä toimii kaikissa ohjelmissa, ei vain . .NET-ohjelmia, kuten C++, Go jne.; Ja ja. VERKKO. NET Core -versio
- Avaa regedit.exe
- Avaa hakemisto HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Luo KEY-dump-kansio tyypillä REG_EXPAND_SZ konfiguroidaksesi hakemiston, johon dump-tiedostot tallennetaan.
- Voit myös luoda KEY DumpCountin tyypillä REG_DWORD määrittää dumpien kokonaismäärän
Tietenkin voit myös konfiguroida näitä PowerShell-komentojen avulla:
Yllä olevan asetuksen mukaan, jos ohjelma poistuu epänormaalisti, se luo ohjelmadumpin kansioon %LOCALAPPDATA%\CrashDumps.
Varat:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
|