Daten eines Absturzes oder von Blockaden

Für diese Features müssen zusätzliche NuGet-Pakete installiert werden, wie in den einzelnen Abschnitten beschrieben.

Tipp

Bei Verwendung von Microsoft.Testing.Platform.MSBuild (transitiv von MSTest, NUnit und xUnit runners eingeschlossen) werden diese Erweiterungen automatisch registriert, wenn Sie ihre NuGet-Pakete installieren – keine Codeänderungen erforderlich. Die in diesem Artikel angegebene manuelle Registrierung ist nur erforderlich, wenn Sie den automatisch generierten Einstiegspunkt durch Festlegen <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>deaktiviert haben.

Absturzabbild

Mit dieser Erweiterung können Sie eine Absturzabbilddatei erstellen, wenn der Prozess abstürzt. Für diese Erweiterung ist das Paket "Microsoft.Testing.Extensions.CrashDump NuGet" erforderlich.

Manuelle Registrierung

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

Options

Option Description
--crashdump Generiert eine Speicherabbilddatei, wenn der Testhostprozess abstürzt. Wird in .NET 6.0+ unterstützt.
--crashdump-filename Gibt den Dateinamen des Dumps an.
--crashdump-type Gibt den Typ des Dumps an. Gültige Werte sind Mini, Heap, Triage und Full. Wird standardmäßig auf Full festgelegt. Weitere Informationen finden Sie unter Arten von Minidumps.
--crash-report [Nur Linux/macOS] Generiert einen JSON-Absturzbericht, wenn der Testprozess abstürzt. Kombinieren Sie dies mit --crashdump, um auch eine Speicherabbilddatei zu generieren. Erfordert .NET 7+, wenn sie allein oder .NET 6+ in Kombination mit --crashdump verwendet wird. Wird für Windows nicht unterstützt, da die .NET Laufzeit die zugrunde liegenden DOTNET_EnableCrashReport und DOTNET_EnableCrashReportOnly Umgebungsvariablen für Windows ignoriert (dotnet/runtime#80191). Verfügbar in MTP ab Version 2.3.0.
--crash-report-if-supported Identisch mit --crash-report aber ignoriert, mit einer Informationsmeldung auf Plattformen, auf denen die Erstellung von Absturzberichten nicht unterstützt wird. Verwenden Sie diese Option, um die gleiche Befehlszeile über CI-Matrizen hinweg beizubehalten, die Windows enthalten. Gegenseitiger Ausschluss mit --crash-report Verfügbar in MTP ab Version 2.3.0.
--crash-sequence Steuert, ob zusammen mit dem Absturzabbild oder Absturzbericht eine Sequenzdatei generiert wird, in der die Tests aufgelistet sind, die während der Testsitzung gestartet und beendet wurden. Die Datei ermöglicht es, die Tests zu identifizieren, die zum Zeitpunkt des Absturzes ausgeführt wurden, ohne das Dump zu prüfen. Gültige Werte sind on (Standard; akzeptiert trueenable, und 1) oder off (akzeptiert falsedisable, und 0). Verfügbar in MTP ab Version 2.3.0.

Vorsicht

Die Erweiterung ist nicht mit .NET Framework kompatibel und wird im Hintergrund ignoriert. Für .NET Framework-Unterstützung aktivieren Sie das Postmortem-Debugging mit Sysinternals ProcDump. Weitere Informationen finden Sie unter Aktivieren des Postmortem-Debuggings: Window Sysinternals ProcDump. Die Postmortem-Debuglösung sammelt auch Prozessabsturzinformationen für .NET, sodass Sie die Verwendung der Erweiterung vermeiden können, wenn Sie sowohl auf .NET als auch auf .NET Framework-Testanwendungen abzielen.

Absturzabbild

Mit dieser Erweiterung können Sie nach einem bestimmten Timeout eine Abbilddatei erstellen. Für diese Erweiterung ist das Microsoft.Testing.Extensions.HangDump NuGet-Paket erforderlich.

Manuelle Registrierung

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

Options

Option Description
--hangdump Generiert eine Speicherabbilddatei, falls der Testhostprozess hängen bleibt.
--hangdump-filename Gibt den Dateinamen des Dumps an. Unterstützt die folgenden Platzhalter: {pname} (Testanwendungsname), {pid} (Prozess-ID), {asm} (Eintragsassemblyname), {tfm} (Zielframework moniker) und {time} (Zeitstempel). Das Legacytoken %p (Prozess-ID) wird auch aus Gründen der Abwärtskompatibilität unterstützt.
--hangdump-timeout Gibt die Dauer von keiner Aktivität an, nach der das Dump generiert wird. Der Timeoutwert wird in einem der folgenden Formate angegeben:
1.5h, 1.5hour1.5hours
90m 90min 90minute 90minutes
5400s 5400sec 5400second 5400seconds
500ms 500mil 500millisecond 500milliseconds
1d, 1day, 1days. Eine bloße Zahl (ohne Suffix) wird als Millisekunden interpretiert. Standardwert: 30m (30 Minuten).
--hangdump-type Gibt den Typ des Dumps an. Gültige Werte sind Mini, Heap, Full, Triage (nicht unter .NET Framework verfügbar) und None. Wird standardmäßig auf Full festgelegt. Weitere Informationen finden Sie unter Arten von Minidumps. Der None Wert ist ab Version 2.1.0 in MTP verfügbar.
--hangdump-type-if-supported Wie --hangdump-type, aber mit einer Informationsmeldung wird auf den nächstpassenden unterstützten Dump-Typ zurückgegriffen, wenn der angeforderte Typ in der aktuellen Laufzeit nicht verfügbar ist. Beispielsweise wird Triage nur für .NET (Core) unterstützt und greift auf Mini für .NET Framework zurück. Verwenden Sie diese Option, um die gleiche Befehlszeile über CI-Matrizen hinweg beizubehalten, die .NET (Core) und .NET Framework kombinieren. Gültige Werte sind Mini, Heap, Full, Triage und None. Gegenseitiger Ausschluss mit --hangdump-type Verfügbar in MTP ab Version 2.3.0.