Arresti anomali e dump di blocco

Queste funzionalità richiedono l'installazione di pacchetti NuGet aggiuntivi, come descritto in ogni sezione.

Suggerimento

Quando si usa Microsoft.Testing.Platform.MSBuild (incluso transitivamente da MSTest, NUnit e runner xUnit), queste estensioni vengono registrate automaticamente quando si installano i pacchetti NuGet, senza necessità di modifiche al codice. La registrazione manuale specificata in questo articolo è necessaria solo se il punto di ingresso generato automaticamente è stato disabilitato impostando <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Dump di arresto anomalo del sistema

Questa estensione consente di creare un file di dump in caso di arresto anomalo del processo. Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.CrashDump .

Registrazione manuale

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

Options

Opzione Descrzione
--crashdump Genera un file dump quando il processo host di test si arresta in modo anomalo. Supportato in .NET 6.0+.
--crashdump-filename Specifica il nome file del dump.
--crashdump-type Specifica il tipo di scarico. I valori validi sono Mini, Heap, Triage e Full. Di default è Full. Per altre informazioni, vedere Tipi di mini dump.
--crash-report [Solo per Linux/macOS] Genera un report di arresto anomalo in formato JSON quando il processo di test va in arresto anomalo. Combinare con --crashdump per generare anche un file di dump. Richiede .NET 7+ se usato da solo o .NET 6+ se combinato con --crashdump. Non supportato in Windows perché il runtime di .NET ignora le variabili di ambiente DOTNET_EnableCrashReport e DOTNET_EnableCrashReportOnly in Windows (dotnet/runtime#80191). Disponibile in MTP a partire dalla versione 2.3.0.
--crash-report-if-supported Come --crash-report, ma ignorato, con un messaggio informativo, sulle piattaforme in cui la generazione di rapporti di arresto anomalo non è supportata. Usare questa opzione per mantenere la stessa riga di comando tra matrici CI che includono Windows. Si escludono con --crash-report a vicenda. Disponibile in MTP a partire dalla versione 2.3.0.
--crash-sequence Determina se viene generato, insieme al dump di arresto anomalo o al report di arresto anomalo, un file di sequenza che elenca i test iniziati e terminati durante la sessione di test. Il file consente di identificare i test in esecuzione al momento dell'arresto anomalo senza esaminare il dump. I valori validi sono on (impostazione predefinita; accetta trueanche , enablee 1) o off (accetta falseanche , disablee 0). Disponibile in MTP a partire dalla versione 2.3.0.

Attenzione

L'estensione non è compatibile con .NET Framework e verrà ignorata automaticamente. Per il supporto di .NET Framework, si abilita il debug postmortem con Sysinternals ProcDump. Per ulteriori informazioni, vedere Abilitazione del debug postmortem con Windows Sysinternals ProcDump. La soluzione di debug postmortem raccoglierà anche le informazioni sull'arresto anomalo del processo per .NET, permettendoti di evitare l'uso dell'estensione se si ha come destinazione applicazioni sia .NET che .NET Framework.

Dump di sistema bloccato

Questa estensione consente di creare un file di dump dopo un determinato timeout. Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.HangDump .

Registrazione manuale

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

Options

Opzione Descrzione
--hangdump Genera un file di dump nel caso in cui il processo host di test si blocchi.
--hangdump-filename Specifica il nome file del dump. Supporta i segnaposto seguenti: {pname} (nome dell'applicazione di test), {pid} (ID del processo), {asm} (nome dell'assembly di ingresso), {tfm} (identificatore del framework di destinazione) e {time} (timestamp). Il token legacy %p (ID processo) è supportato anche per la compatibilità con le versioni precedenti.
--hangdump-timeout Specifica il periodo di inattività dopo il quale viene generato il dump. Il valore di timeout viene specificato in uno dei formati seguenti:
1.5h, 1.5hour, 1.5hours
90m, 90min, 90minute90minutes
5400s, 5400sec, 5400second5400seconds
500ms, 500mil, 500millisecond500milliseconds
1d, 1day, 1days. Un numero bare (senza suffisso) viene interpretato come millisecondi. Il valore predefinito è 30m (30 minuti).
--hangdump-type Specifica il tipo di scarico. I valori validi sono Mini, Heap, Full, Triage (non disponibile in .NET Framework) e None. Di default è Full. Per altre informazioni, vedere Tipi di mini dump. Il None valore è disponibile in MTP a partire dalla versione 2.1.0.
--hangdump-type-if-supported Uguale a --hangdump-type, ma ripiega, con un messaggio informativo, sul tipo di dump supportato più simile quando il tipo richiesto non è disponibile nel runtime corrente. Ad esempio, Triage è supportato solo in .NET (Core) ed esegue il fallback a Mini in .NET Framework. Usare questa opzione per mantenere la stessa riga di comando tra matrici CI che combinano .NET (Core) e .NET Framework. I valori validi sono Mini, Heap, Full, Triage e None. Si escludono con --hangdump-type a vicenda. Disponibile in MTP a partire dalla versione 2.3.0.