Volcados de bloqueo y de falta de respuesta

Estas características requieren la instalación de paquetes NuGet adicionales, como se describe en cada sección.

Sugerencia

Al usar Microsoft.Testing.Platform.MSBuild (incluido transitivamente por MSTest, NUnit y ejecutores xUnit), estas extensiones se registran automáticamente al instalar sus paquetes NuGet, no se necesitan cambios de código. El registro manual especificado en este artículo solo es necesario si ha deshabilitado el punto de entrada generado automáticamente estableciendo <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Volcado de memoria

Esta extensión permite crear un archivo de volcado de memoria si el proceso se bloquea. Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.CrashDump .

Registro manual

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

Options

Opción Description
--crashdump Genera un archivo de volcado cuando el proceso de host de prueba se bloquea. Se admite en .NET 6.0 y versiones posteriores.
--crashdump-filename Especifica el nombre de archivo del volcado de memoria.
--crashdump-type Especifica el tipo del volcado de memoria. Los valores válidos son Mini, Heap, Triage y Full. Tiene como valor predeterminado Full. Para obtener más información, consulte Tipos de minivolcados.
--crash-report [Solo Linux/macOS] Genera un informe de bloqueo JSON cuando el proceso de prueba se bloquea. Combínelo con --crashdump para generar también un archivo de volcado. Requiere .NET 7+ cuando se usa solo o .NET 6+ cuando se combina con --crashdump. No se admite en Windows porque el entorno de ejecución de .NET omite las variables de entorno subyacentes DOTNET_EnableCrashReport y DOTNET_EnableCrashReportOnly en Windows (dotnet/runtime#80191). Disponible en MTP a partir de la versión 2.3.0.
--crash-report-if-supported Igual que --crash-report, pero se ignora, con un mensaje informativo, en las plataformas en las que no se admite la generación de informes de errores. Use esta opción para mantener la misma línea de comandos entre matrices de CI que incluyen Windows. Mutuamente excluyente con --crash-report. Disponible en MTP a partir de la versión 2.3.0.
--crash-sequence Controla si se genera un archivo de secuencia en el que se enumeran las pruebas que se iniciaron y finalizaron durante la sesión de prueba junto al volcado de memoria o al informe de error. El archivo permite identificar las pruebas que se estaban ejecutando en el momento del bloqueo sin inspeccionar el volcado de memoria. Los valores válidos son on (valor predeterminado; también acepta , truey enable) o 1 (también acepta off, falsey disable).0 Disponible en MTP a partir de la versión 2.3.0.

Precaución

La extensión no es compatible con .NET Framework y se omitirá silenciosamente. Para obtener compatibilidad con .NET Framework, habilite la depuración postmortem con ProcDump de Sysinternals. Para obtener más información, consulte Habilitación de la depuración postmortem: Ventana Sysinternals ProcDump. La solución de depuración postmortem también recopilará información de bloqueo de procesos para .NET para que pueda evitar el uso de la extensión si tiene como destino aplicaciones de prueba de .NET y .NET Framework.

Volcado de memoria de bloqueo

Esta extensión le permite crear un archivo de volcado después de un tiempo de espera determinado. Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.HangDump .

Registro manual

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

Options

Opción Description
--hangdump Genera un archivo de volcado en caso de que el proceso de host de prueba se bloquee.
--hangdump-filename Especifica el nombre de archivo del volcado de memoria. Admite los siguientes marcadores de posición: {pname} (nombre de aplicación de prueba), {pid} (id. de proceso), {asm} (nombre del ensamblado de entrada), {tfm} (moniker de la plataforma de destino) y {time} (marca de tiempo). El token heredado %p (id. de proceso) también se admite para la compatibilidad con versiones anteriores.
--hangdump-timeout Especifica la duración de inactividad tras la cual se genera el volcado. El valor de tiempo de espera se especifica en uno de los siguientes formatos:
1.5h, , 1.5hour, 1.5hours
90m, 90min, , 90minute, 90minutes
5400s, 5400sec, , 5400second, 5400seconds
500ms, 500mil, , 500millisecond, 500milliseconds
1d, 1day, 1days. Un número vacío (sin sufijo) se interpreta como milisegundos. El valor predeterminado es 30m (30 minutos).
--hangdump-type Especifica el tipo del volcado de memoria. Los valores válidos son Mini, Heap, Full, Triage (no disponible en .NET Framework) y None. Tiene como valor predeterminado Full. Para obtener más información, consulte Tipos de minivolcados. El None valor está disponible en MTP a partir de la versión 2.1.0.
--hangdump-type-if-supported Igual que --hangdump-type, pero recurre, con un mensaje informativo, al tipo de volcado compatible más cercano cuando el tipo solicitado no está disponible en el entorno de ejecución actual. Por ejemplo, Triage solo se admite en .NET (Core) y vuelve a Mini en .NET Framework. Use esta opción para mantener la misma línea de comandos entre matrices de CI que combinan .NET (Core) y .NET Framework. Los valores válidos son Mini, Heap, Full, Triagey None. Mutuamente excluyente con --hangdump-type. Disponible en MTP a partir de la versión 2.3.0.