Snímky při pádu a zaseknutí paměti

Tyto funkce vyžadují instalaci dalších balíčků NuGet, jak je popsáno v každé části.

Návod

Pokud používáte Microsoft.Testing.Platform.MSBuild (zahrnuté tranzitivně pomocí msTest, NUnit a xUnit runnerů), tato rozšíření se automaticky zaregistrují při instalaci jejich balíčků NuGet – nejsou potřeba žádné změny kódu. Ruční registrace zadaná v tomto článku se vyžaduje pouze v případě, že jste zakázali automaticky vygenerovaný vstupní bod nastavením <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Výpis stavu systému

Toto rozšíření umožňuje vytvořit soubor s výpisem stavu systému, pokud se proces chybově ukončí. Toto rozšíření vyžaduje balíček NuGet Microsoft.Testing.Extensions.CrashDump .

Ruční registrace

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHostControllers.AddCrashDumpProvider();

Možnosti

Možnost Description
--crashdump Vygeneruje výpisový soubor při chybovém ukončení procesu testovacího hostitele. Podporováno v .NET 6.0 nebo novější.
--crashdump-filename Určuje název souboru s výpisem.
--crashdump-type Určuje typ výpisu. Platné hodnoty jsou Mini, Heap, Triage a Full. Výchozí hodnota je Full. Další informace naleznete v tématu Typy minidumpů.
--crash-report [Pouze Linux/macOS] Vygeneruje hlášení o pádu ve formátu JSON, když testovací proces spadne. V kombinaci s --crashdump se také vygeneruje soubor s výpisem paměti. Vyžaduje .NET 7+ při použití samostatně nebo .NET 6+ v kombinaci s --crashdump. V Windows se nepodporuje, protože modul runtime .NET ignoruje základní proměnné prostředí DOTNET_EnableCrashReport a DOTNET_EnableCrashReportOnly na Windows (dotnet/runtime#80191). K dispozici v MTP od verze 2.3.0.
--crash-report-if-supported Stejné jako --crash-report, ale bude ignorováno a zobrazí se informační zpráva na platformách, které nepodporují vytváření hlášení o pádu. Tato možnost slouží k zachování stejného příkazového řádku napříč maticemi CI, které obsahují Windows. Vzájemně se vylučuje s --crash-report. K dispozici v MTP od verze 2.3.0.
--crash-sequence Určuje, jestli se vygeneruje sekvenční soubor se seznamem testů, které se spustily a ukončily během testovací relace, spolu se výpisem stavu systému nebo zprávou o chybovém ukončení. Soubor umožňuje určit, které testy byly spuštěné v okamžiku selhání, bez nutnosti kontrolovat výpis. Platné hodnoty jsou on (výchozí; také přijímá true, enablea 1) nebo off (také přijímá false, disable, a 0). K dispozici v MTP od verze 2.3.0.

Upozornění

Rozšíření není kompatibilní s rozhraním .NET Framework a bude bezobslužně ignorováno. Pro podporu .NET Framework povolíte postmortem ladění pomocí nástroje Sysinternals ProcDump. Další informace naleznete v tématu Povolení postmortem ladění: Windows Sysinternals ProcDump. Řešení pro ladění postmortem také bude shromažďovat informace o chybách procesu pro .NET, abyste se vyhnuli použití rozšíření, pokud cílíte na testovací aplikace pro .NET i .NET Framework.

Zablokování výpisu paměti

Toto rozšíření umožňuje vytvořit soubor s výpisem paměti po daném časovém limitu. Toto rozšíření vyžaduje balíček NuGet Microsoft.Testing.Extensions.HangDump .

Ruční registrace

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHostControllers.AddHangDumpProvider();

Možnosti

Možnost Description
--hangdump Vygeneruje soubor s výpisem paměti pro případ, že proces testovacího hostitele přestane reagovat.
--hangdump-filename Určuje název souboru s výpisem. Podporuje následující zástupné symboly: {pname} (název testovací aplikace), {pid} (ID procesu), {asm} (název sestavení položky), {tfm} (moniker cílového rozhraní) a {time} (časové razítko). Kvůli zpětné kompatibilitě se podporuje také starší %p token (ID procesu).
--hangdump-timeout Určuje dobu trvání absence aktivity, po které se vygeneruje výpis stavu. Hodnota časového limitu je zadána v jednom z následujících formátů:
1.5h, 1.5hour, 1.5hours
90m, 90min, , 90minute90minutes
5400s, 5400sec, , 5400second5400seconds
500ms, 500mil, , 500millisecond500milliseconds
1d, 1day, 1days. Holé číslo (bez přípony) se interpretuje jako milisekundy. Výchozí hodnota je 30m (30 minut).
--hangdump-type Určuje typ výpisu. Platné hodnoty jsou Mini, Heap, Full, Triage (není k dispozici v .NET Framework) a None. Výchozí hodnota je Full. Další informace naleznete v tématu Typy minidumpů. Hodnota None je dostupná v MTP od verze 2.1.0.
--hangdump-type-if-supported Totéž jako --hangdump-type, ale pokud požadovaný typ výpisu paměti není v aktuálním běhovém prostředí k dispozici, přejde s informační zprávou na nejbližší podporovaný typ výpisu paměti. Například Triage se podporuje pouze na .NET (Core) a vrátí se zpět na Mini v .NET Frameworku. Tato možnost slouží k zachování stejného příkazového řádku napříč maticemi CI, které kombinuje .NET (Core) a .NET Framework. Platné hodnoty jsou Mini, , HeapFull, Triagea None. Vzájemně se vylučuje s --hangdump-type. K dispozici v MTP od verze 2.3.0.