Compartir vía


Recopilación de volcados de memoria tras un bloqueo

La configuración de una aplicación para que recopile un volcado de memoria cuando se produce un bloqueo se lleva a cabo estableciendo variables de entorno específicas. Esto resulta útil si quiere comprender por qué se ha producido un bloqueo. Por ejemplo, la captura de un volcado de memoria cuando se inicia una excepción le ayuda a identificar un problema mediante el examen del estado de la aplicación en el momento del bloqueo.

En la tabla siguiente se muestran las variables de entorno que se pueden configurar para la recopilación de volcados de memoria en caso de bloqueo.

Variable de entorno Descripción Valor predeterminado
DOTNET_DbgEnableMiniDump Si se establece en 1, se habilita la generación de volcado de memoria principal. 0
DOTNET_DbgMiniDumpType Tipo de volcado de memoria que se va a recopilar. Para obtener más información, consulte Tipos de minivolcados. 2 (Heap)
DOTNET_DbgMiniDumpName Ruta de acceso a un archivo en el que se escribirá el volcado de memoria. Asegúrese de que el usuario con el que se ejecuta el proceso dotnet tiene permisos de escritura en el directorio especificado. /tmp/coredump.<pid>
DOTNET_CreateDumpDiagnostics Si se establece en 1, se habilita el registro de diagnóstico del proceso de volcado de memoria. 0
DOTNET_DbgCreateDumpToolPath (Solo NativeAOT de .NET 11+ )
Ruta de acceso al directorio donde se encuentra la herramienta createdump. El tiempo de ejecución buscará el binario createdump en este directorio. Esta variable es útil en escenarios en los que createdump no se incluye con el entorno de ejecución y debe llevar su propia herramienta de generación de volcado. Esta variable de entorno solo se admite en aplicaciones NativeAOT y se ignora en otros casos.
DOTNET_EnableCrashReport (no se admite en Windows).
Si se establece en 1, el entorno de ejecución genera un informe de bloqueo con formato JSON que incluye información sobre los subprocesos y los marcos de pila de la aplicación que se bloquea. El nombre del informe de bloqueo es la ruta de acceso del volcado de memoria o el nombre con .crashreport.json anexado.
DOTNET_CreateDumpVerboseDiagnostics Si se establece en 1, habilita el registro de diagnóstico detallado del proceso de volcado de memoria. 0
DOTNET_CreateDumpLogToFile Ruta de acceso del archivo en el que se deben escribir los mensajes de diagnóstico. Si no se establece, los mensajes de diagnóstico se escriben en la consola de la aplicación de bloqueo.

Plantillas de ruta de acceso de archivo

A partir de .NET 5, DOTNET_DbgMiniDumpName también puede incluir especificadores de plantilla de formato que se rellenan dinámicamente:

Especificador Importancia
%% Un solo carácter %
%p PID del proceso de volcado de memoria
%e Nombre de archivo ejecutable del proceso
%h Nombre de host que devuelve gethostname()
%t Tiempo de volcado de memoria, expresado como segundos desde la época: 1970-01-01 00:00:00 +0000 (UTC)

Tipos de minivolcados

En la tabla siguiente se muestran todos los valores que se pueden usar para DOTNET_DbgMiniDumpType. Por ejemplo, si DOTNET_DbgMiniDumpType se establece en 1, significa que el volcado de tipo Mini se recopilará al producirse un bloqueo.

Importancia Nombre Descripción
1 Mini Un volcado de memoria pequeño que contiene listas de módulos, listas de subprocesos, información de excepción y todas las pilas.
2 Heap Un volcado de memoria grande y relativamente completo que contiene listas de módulos, listas de subprocesos, todas las pilas, información de excepción, información de control y toda la memoria excepto las imágenes asignadas.
3 Triage Igual que Mini, pero quita información personal del usuario, como rutas de acceso y contraseñas.
4 Full El volcado de memoria más grande que contiene toda la memoria, incluidas las imágenes de los módulos.

Solo los modelos de aplicación AOT nativos y de archivo único admiten volcados completos.