Požadavky: Při vývoji aplikací s .NET/C# není možné, aby jakýkoli vývojář zajistil stabilní a robustní spuštění programu, což může souviset s logikou kódu vývojáře nebo s běžícím prostředím uživateleNení 100% zaručeno, že aplikace, kterou vytvoříte, bude bez problémůNení hrozné mít problém, ale hrozné je, že existuje problém, který nedokáže najít příčinu a vyřešit ho.
Pokud aplikace není vykonána podle očekávání a dojde k abnormálnímu ukončení, jak může být automaticky vygenerován DMP dump soubor, který problém vyřeší?
Výpis je soubor, který obsahuje snímek procesu při jeho vytvoření a může být použit ke kontrole stavu aplikace. Když je obtížné připojit ladicí nástroj k .NET aplikaci, například produkčnímu nebo CI prostředí, můžete použít dumpy k ladění aplikace. Použití výpisů zachycuje stav problematických procesů a stav lze zkontrolovat přímo bez zastavení aplikace.
Sběr výpisů
Můžete použít proměnné prostředí k nastavení aplikace tak, aby v případě selhání sbírala výpisy. To je užitečné, pokud chcete znát příčinu selhání. Například zachycení výpisů při vyhození výjimky pomáhá identifikovat problémy kontrolou stavu aplikace, pokud selže.
Následující tabulka ukazuje proměnné prostředí, které můžete použít k nastavení aplikace pro sběr výpisů v případě selhání.
Proměnná prostředí | ilustrovat | Výchozí | | COMPlus_DbgEnableMiniDump nebo DOTNET_DbgEnableMiniDump | Pokud je nastaveno na 1, povolte generování dumpu jádra. | 0 | | COMPlus_DbgMiniDumpType nebo DOTNET_DbgMiniDumpType | Typ skládky, kterou sbírat. Podrobnosti najdete v tabulce níže | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName nebo DOTNET_DbgMiniDumpName | Zapiš cestu k souboru do výpisu. Ujistěte se, že uživatel provozující proces dotnet má přístup k zápisu do určeného adresáře. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics nebo DOTNET_CreateDumpDiagnostics | Pokud je nastaveno na 1, zapněte diagnostické logování pro proces výpisu. | 0 | | COMPlus_EnableCrashReport nebo DOTNET_EnableCrashReport | (Vyžaduje .NET 6 nebo novější) Pokud je nastaveno na 1, runtime vygeneruje zprávu o selhání ve formátu JSON, která obsahuje informace o vláknech a stackových rámcích selhávající aplikace. Název hlášení o pádu je cesta/název výpisu připojený k .crashreport.json. | | | COMPlus_CreateDumpVerboseDiagnostics nebo DOTNET_CreateDumpVerboseDiagnostics | (Vyžaduje .NET 7 nebo novější) Pokud je nastaveno na 1, povolte podrobné diagnostické logování pro proces dumpu. | 0 | | COMPlus_CreateDumpLogToFile nebo DOTNET_CreateDumpLogToFile | (vyžaduje .NET 7 nebo novější) Cesta k diagnostickému zprávě by měla být zapsána. Pokud není nastaveno, do konzole neúspěšné aplikace se zapíše diagnostická zpráva. | |
Pro tyto proměnné prostředí standardizuje .NET 7 prefix DOTNET_ místo COMPlus_. Nicméně předpona COMPlus_ bude nadále správně fungovat. Pokud jsteV dřívějších verzích .NET runtime by proměnné prostředí měly stále používat prefix COMPlus_。
Vytvořte nový test aplikace .NET Core 6
Použijte VS 2022 k otestování nového testu aplikace .NET Core 6 s následujícím kódem:
Spusť program pomocí příkazu cmd, jak je znázorněno na obrázku níže:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Neřešená výjimka. Systém.Výjimka: itsvse.com v programu. <Main>$(String[] args) v C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9 [createdump] Zápis minidumpu s haldou do souboru C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Dump úspěšně napsán
Vidíte, že po abnormálním pádu programu je úspěšně uveden v adresáři, který jsme určiliVygeneruje se soubor .dmp výpisuCo se týče analýzy analýzy, je to jiná věc.
Univerzální nastavení Windows Platform
Ve Windows lze Windows Error Reporting (WER) nastavit tak, aby generoval výpisy při pádu aplikace.
Tato metoda funguje pro všechny programy, nejen pro . .NET programy, jako jsou C++, Go atd.; A a. SÍŤ. Verze NET Core
- Otevřené regedit.exe
- Otevřete adresář HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Vytvořte složku KEY DumpFolder typu REG_EXPAND_SZ pro konfiguraci adresáře, kde jsou uloženy soubory pro výpis
- Můžete také vytvořit KEY DumpCount typu REG_DWORD nastavit celkový počet dumpů
Samozřejmě je můžete také konfigurovat pomocí PowerShell příkazů:
Podle výše uvedené konfigurace, pokud program abnormálně ukončí provoz, vytvoří výpis programu v adresáři %LOCALAPPDATA%\CrashDumps.
Prostředky:
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
|