Compartir a través de


Volcado en vivo de DTrace

DTrace proporciona una instalación para capturar volcado en vivo 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 Análisis de archivos de volcado de memoria mediante WinDbg. Para descargar el depurador, consulte Descargar e instalar el depurador de Windows de WinDbg.

El volcado en vivo de DTrace proporciona la capacidad de desencadenar el volcado en el punto exacto donde se produjo el error. Por ejemplo, el error podría ser una función que devuelve un error. Puede usar DTrace para enlazar a esta función return y desencadenar un volcado en directo cuando el valor devuelto es "error".

Nota:

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

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

Uso del volcado en vivo de DTrace

Uso: lkd (parámetro);

Las siguientes opciones se pueden establecer para cambiar la información que se incluye en el mini volcado de memoria dinámico.

0x0: volcado de kernel completo (valor predeterminado)

0x1: páginas de usuario y páginas kernel (solo funciona con la asociación KD)

0x2 - Minivolcado

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

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

Código de ejemplo de volcado 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 un símbolo del sistema 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

Use WinDbg para trabajar con un archivo de volcado de memoria, tal y como 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 desde el visor de eventos, como se describe a continuación.

Habilitación del canal analítico desde el símbolo del sistema

Use este comando para habilitar el canal analítico desde y el símbolo del sistema del administrador.

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

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

  1. Iniciar Windows Visor de eventos

  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 de memoria en vivo completos

Estos valores de ejemplo siguientes muestran cómo establecer el número máximo de volcados de memoria completos que pueden estar en disco en un momento dado a 10 y almacenar 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.

Deshabilitación de la limitación

La limitación es una característica que impide que los volcados 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 restringidos de recursos.

Compruebe la configuración de limitación del volcado en vivo y, si es necesario, vuelva a intentarlo deshabilitando la limitación estableciendo Las claves SystemThrottleThreshold y ComponentThrottleThreshold en 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 -Texto de error: 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 de volcados 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 d:\livedumps de acceso raíz del volcado de memoria activa en (por ejemplo).

No cree manualmente la carpeta tal como la administra el sistema operativo y se creará cuando el volcado se desencadene con los permisos adecuados.

Vea también

DTrace en Windows

Programación de Windows de DTrace

Ejemplos de código de Windows de DTrace