Comparteix via


Volcado en directo de DTrace

DTrace proporciona una herramienta para capturar un volcado en tiempo real desde el script D mediante lkd(). Los archivos de volcado de memoria se usan para depurar problemas complejos en Windows mediante el depurador de Windows. Para obtener más información, consulte Analizar archivos de volcado de errores usando WinDbg. Para descargar el depurador, consulte Descargar e instalar el depurador de Windows de WinDbg.

El volcado en directo de DTrace proporciona la capacidad de desencadenar el volcado en el punto exacto en el que se produjo el error. Por ejemplo, el error podría ser una función que devuelve un error. Puede usar DTrace para engancharse al retorno de esta función y desencadenar un volcado en tiempo real cuando el valor devuelto sea "error".

Nota:

DTrace se admite en las compilaciones de Insider de Windows después de la versión 18980 y windows Server Build 18975.

Para obtener información general sobre cómo trabajar con DTrace en Windows, vea DTrace.

Uso de volcado en vivo de DTrace

Uso: lkd (parámetro);

Las siguientes opciones se pueden configurar para cambiar qué información se incluye en el mini dump en vivo.

0x0 - Volcado de kernel completo (valor predeterminado)

0x1 - Páginas de usuario más páginas del núcleo (funciona solo con la conexión KD)

0x2 - Minidump

0x4: páginas de Hyper-V y páginas del kernel)

0x5: páginas de usuario, kernel e hipervisor.

Código de ejemplo de depuración en vivo

#pragma D option destructive

inline uint32_t STATUS_UNSUCCESSFUL = 0xc0000001UL;

syscall:::return
{ 
	this->status = (uint32_t)arg0;

	if (this->status == STATUS_UNSUCCESSFUL)
	{ 
		printf ("Return value arg0:%x \n", this->status);
		printf ("Triggering LiveDump \n");
		lkd(0);
		exit(0);
	}
}

Guarde el archivo como livedumpstatuscheck.d.

Abra una interfaz de comandos como Administrador y ejecute el script con la opción -s.

C:\Windows\System32>dtrace -s livedumpstatuscheck.d
dtrace: script 'livedumpstatuscheck.d' matched 1881 probes
dtrace: allowing destructive actions
CPU     ID                    FUNCTION:NAME
  0     93 NtAlpcSendWaitReceivePort:return Return value arg0:c0000001
Triggering LiveDump

El archivo de volcado de memoria que se crea normalmente se encuentra en C:\Windows\LiveKernelReports.

Si se ha cambiado la ubicación del archivo de volcado, el valor se almacena en esta clave del Registro: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

Utilice WinDbg para trabajar con un archivo de volcado de memoria, según se ha descrito anteriormente.

Solución de problemas

Abra el Visor de eventos de Windows: Vaya a: Registros de aplicaciones y servicios-Microsoft-Windows-Kernel-Livedump-Operational>>>>

Si no encontró ningún registro, habilite el canal analítico desde el símbolo del sistema o el visor de eventos, tal como se describe a continuación.

Habilitar el canal analítico desde la línea de comandos

Utiliza este comando para habilitar el canal analítico desde el símbolo del sistema con derechos de administrador.

wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true

Habilitación del canal analítico mediante el Visor de eventos

  1. Iniciar el Visor de eventos de Windows

  2. Haga clic en Ver y active "Mostrar registros analíticos y de depuración". Esto mostrará el canal analítico para livedump.

  3. Haga clic con el botón derecho en y habilite Microsoft-Windows-Kernel-LiveDump/Analytics.

Habilitación de volcados en directo completos

Las siguientes opciones de ejemplo establecen el número máximo de volcados en directo completos que pueden estar en disco en cualquier momento a 10. Además, almacenan los volcados de memoria completos, no solo un mini volcado de memoria.

reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v FullLiveReportsMax /d 10

reg add "HKLM\System\CurrentControlSet\Control\CrashControl" /f /t REG_DWORD /v AlwaysKeepMemoryDump /d 1

Para obtener más información sobre esta configuración, consulte Configuración de WER.

Desactivar la limitación

La limitación es una característica que impide que los volcados de memoria y el sistema de registro afecten al uso normal de Windows. Esta característica puede interferir con la creación de volcados en vivo en determinados entornos con restricciones de recursos.

Compruebe la configuración de la aceleración del volcado en tiempo real y, si es necesario, vuelva a intentarlo deshabilitando la limitación estableciendo las claves SystemThrottleThreshold y ComponentThrottleThreshold a cero, como se muestra aquí.

reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v SystemThrottleThreshold /d 0
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v ComponentThrottleThreshold /d 0

Problemas de espacio en disco (ID de Evento 202 -Error Texto: Live Dump Write Deferred Dump Data API finalizó. Estado NT: 0xC000007F).

Esto significa que el espacio en disco no es suficiente. Actualice la clave del Registro que se muestra a continuación para cambiar la ruta de acceso para la creación del volcado en vivo, en este ejemplo a una unidad D: que tiene espacio de almacenamiento adicional disponible.

reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"

Este comando establece la ruta de acceso raíz del volcado en vivo en d:\livedumps (por ejemplo).

No cree manualmente la carpeta, ya que está gestionada por el sistema operativo y se generará automáticamente cuando se inicie el volcado con los permisos correctos.

Véase también

DTrace en Windows

Programación de Windows de DTrace

Ejemplos de código de Windows de DTrace