Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 5902|Odpověď: 1

[.NET Core] [Skutečný boj]. Pády a výjimky aplikací NET/C# automaticky generují DMP dump soubory

[Kopírovat odkaz]
Zveřejněno 6. 11. 2022 22:41:42 | | | |
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_DbgEnableMiniDumpPokud je nastaveno na 1, povolte generování dumpu jádra.0
COMPlus_DbgMiniDumpType nebo DOTNET_DbgMiniDumpTypeTyp skládky, kterou sbírat. Podrobnosti najdete v tabulce níže2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName nebo DOTNET_DbgMiniDumpNameZapiš 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_CreateDumpDiagnosticsPokud 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é.




Předchozí:Podrobné vysvětlení pravidel ukládání pro obrázky příloh Discuz, obrázky avatarů a obrázky alb
Další:Praktický provoz: Použijte BundleTransformer jako náhradu za System.Web.Optimization
 Pronajímatel| Zveřejněno 6. 11. 2022 22:44:06 |
Posílejte dump soubory:

Po spuštění programu zjistěte, zda adresář obsahuje vygenerovaný dump soubor, pokud ano, odešlete soubor do určeného rozhraní a poté soubor smažte.
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com