Blocage et vidages de gel

Ces fonctionnalités nécessitent l’installation de packages NuGet supplémentaires, comme décrit dans chaque section.

Conseil / Astuce

Lors de l’utilisation de Microsoft.Testing.Platform.MSBuild (inclus transitivement par MSTest, NUnit et xUnit Runners), ces extensions sont enregistrées automatiquement lorsque vous installez leurs packages NuGet, sans modification du code nécessaire. L’inscription manuelle spécifiée dans cet article n’est requise que si vous avez désactivé le point d’entrée généré automatiquement en définissant <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Vidage sur incident

Cette extension vous permet de créer un fichier de vidage sur incident en cas de blocage du processus. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.CrashDump .

Inscription manuelle

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

Options

Choix Descriptif
--crashdump Génère un fichier de vidage lorsque le processus hôte de test se bloque. Pris en charge dans .NET 6.0+.
--crashdump-filename Spécifie le nom du fichier de vidage.
--crashdump-type Spécifie le type de vidage. Les valeurs valides sont Mini, Heap, Triage et Full. La valeur par défaut est Full. Pour plus d’informations, consultez Types de mini-images mémoire.
--crash-report [Linux/macOS uniquement] Génère un rapport d’incident JSON lorsque le processus de test se bloque. Combinez avec --crashdump pour générer également un fichier de vidage mémoire. Nécessite .NET 7+ lorsqu’il est utilisé seul ou .NET 6+ lorsqu’il est combiné avec --crashdump. Non pris en charge sur Windows, car le runtime .NET ignore les variables d’environnement DOTNET_EnableCrashReport et DOTNET_EnableCrashReportOnly sur Windows (dotnet/runtime#80191). Disponible dans MTP à compter de la version 2.3.0.
--crash-report-if-supported Comme --crash-report, mais ignoré, avec un message d’information, sur les plateformes où la génération de rapports d’incident n’est pas prise en charge. Utilisez cette option pour conserver la même ligne de commande sur les matrices CI qui incluent Windows. Mutuellement exclusif avec --crash-report. Disponible dans MTP à compter de la version 2.3.0.
--crash-sequence Détermine si un fichier de séquence répertoriant les tests qui ont démarré et se sont terminés pendant la session de test est généré en parallèle du fichier de vidage sur incident ou du rapport d’incident. Le fichier permet d’identifier les tests qui s’exécutaient au moment de l’incident sans inspecter le vidage. Les valeurs valides sont on (valeur par défaut ; accepte trueégalement , enableet 1) ou off (accepte falseégalement , disableet ).0 Disponible dans MTP à compter de la version 2.3.0.

Avertissement

L'extension n'est pas compatible avec .NET Framework et sera ignorée en mode silencieux. Pour la prise en charge de .NET Framework, vous activez le débogage postmortem avec Sysinternals ProcDump. Pour plus d’informations, consultez Activation du débogage post-mortem : Windows Sysinternals ProcDump. La solution de débogage postmortem collecte également des informations sur les incidents de processus pour .NET afin de pouvoir éviter l'utilisation de l'extension si vous ciblez à la fois des applications de test .NET et .NET Framework.

Vidage sur blocage

Cette extension vous permet de créer un fichier de vidage après un délai d’attente donné. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.HangDump .

Inscription manuelle

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

Options

Choix Descriptif
--hangdump Génère un fichier de vidage au cas où le processus hôte de test se bloque.
--hangdump-filename Spécifie le nom du fichier de vidage. Prend en charge les espaces réservés suivants : {pname} (nom de l’application de test), {pid} (identifiant du processus), {asm} (nom de l’assembly d’entrée), {tfm} (identificateur du framework cible) et {time} (horodatage). Le token hérité %p (identifiant de processus) est également pris en charge pour la rétrocompatibilité.
--hangdump-timeout Spécifie la durée d’absence d’activité après laquelle le vidage est généré. La valeur du délai d’expiration est spécifiée dans l’un des formats suivants :
1.5h 1.5hour 1.5hours
90m 90min 90minute 90minutes
5400s 5400sec 5400second 5400seconds
500ms 500mil 500millisecond 500milliseconds
1d, 1day, 1days. Un nombre nu (sans suffixe) est interprété en millisecondes. La valeur par défaut est 30m (30 minutes).
--hangdump-type Spécifie le type de vidage. Les valeurs valides sont Mini, Heap, Full, Triage (non disponibles sur .NET Framework) et None. La valeur par défaut est Full. Pour plus d’informations, consultez Types de mini-images mémoire. La None valeur est disponible dans MTP à partir de la version 2.1.0.
--hangdump-type-if-supported Identique à --hangdump-type, mais bascule, avec un message d’information, vers le type de vidage pris en charge le plus proche lorsque le type demandé n’est pas disponible dans l’environnement d’exécution actuel. Par exemple, Triage est uniquement pris en charge sur .NET (Core) et revient à Mini sur .NET Framework. Utilisez cette option pour conserver la même ligne de commande sur les matrices CI qui combinent .NET (Core) et .NET Framework. Les valeurs acceptables sont : Mini, Heap, Full, Triage et None. Mutuellement exclusif avec --hangdump-type. Disponible dans MTP à compter de la version 2.3.0.