Compartir a través de


Uso de KDbgCtrl

La herramienta KDbgCtrl (Control de depuración de kernel, kdbgctrl.exe) se puede usar para controlar la conexión de depuración del kernel desde el equipo de destino.

Para usar esta herramienta, el equipo de destino debe ejecutar Windows Server 2003 o una versión posterior de Windows.

KDbgCtrl puede controlar cinco configuraciones diferentes: Depuración completa del kernel, Depuración automática del kernel, Control de errores en modo de usuario, Bloqueo de depuración de kernel y tamaño del búfer de DbgPrint.

Para usar KDbgCtrl, debe haber habilitado la depuración del kernel en la configuración de arranque del equipo de destino antes del último arranque. KDbgCtrl no se puede usar para habilitar la depuración del kernel si no se ha realizado. Consulte Parámetros de arranque para habilitar la depuración para obtener más información sobre esta configuración de arranque.

Depuración completa del kernel

Cuando la depuración de kernel completa está habilitada, un depurador de kernel que se ejecuta en el equipo host puede irrumpir en el equipo de destino. El equipo de destino irrumpirá en el depurador de kernel si se alcanza una excepción en modo kernel. También se permiten mensajes del destino al host, como la salida de DbgPrint, los mensajes de carga de símbolos y los depuradores en modo de usuario redirigidos.

Si esta configuración está deshabilitada, el destino omitirá todas las señales del equipo host.

La depuración completa del kernel está habilitada de forma predeterminada. Para comprobar el valor de configuración actual, use kdbgctrl -c. Para deshabilitar esta configuración, use kdbgctrl -d. Para habilitar esta configuración, use kdbgctrl -e.

Si desea comprobar la configuración actual y usarla para controlar la ejecución dentro de un archivo por lotes, puede usar el comando kdbgctrl -cx. Para obtener más información sobre este comando, consulte Opciones de línea de comandos de KDbgCtrl.

Depuración automática del kernel

Si la depuración completa del kernel está habilitada, la configuración actual de depuración automática del kernel es irrelevante, se permite toda la comunicación.

Cuando la depuración completa del kernel está deshabilitada y la depuración automática del kernel está habilitada, solo el equipo de destino puede iniciar una conexión de depuración.

En este caso, solo una excepción del modo kernel, un punto de interrupción u otro evento del modo kernel hará que se establezca una conexión. La conexión no se establecerá para la salida de DbgPrint, los mensajes de carga de símbolos, la entrada y salida del depurador en modo de usuario redirigido, u otros mensajes similares, que se almacenarán en el búfer de DbgPrint en lugar de enviarse al depurador de kernel.

Si una excepción o evento hace que el destino irrumpa en el depurador de kernel, la depuración completa del kernel se activará automáticamente, como si hubiera ejecutado kdbgctrl -e.

La depuración automática del kernel está deshabilitada de forma predeterminada (aunque esto es irrelevante, a menos que también se deshabilite la depuración completa del kernel). Para comprobar el valor de configuración actual, use kdbgctrl -ca. Para deshabilitar esta configuración, use kdbgctrl -da. Para habilitar esta configuración, use kdbgctrl -ea.

Control de errores en modo de usuario

Cuando el control de errores en modo de usuario está habilitado, algunos eventos en modo de usuario harán que el equipo de destino irrumpa en el depurador de kernel.

En concreto, todas las interrupciones int 3, como los puntos de interrupción insertados en el código por un depurador o llamadas a DbgBreakPoint, provocarán una irrupción en el depurador de kernel. Sin embargo, las excepciones estándar, como las infracciones de acceso y la división por cero, normalmente no se enviarán al depurador de kernel.

Si un depurador en modo de usuario ya está asociado al proceso, este depurador capturará todos los errores en modo de usuario y el depurador del kernel no se modificará. Para obtener la clasificación de prioridad de los distintos controladores de errores en modo de usuario, consulte Habilitación de la depuración postmortem.

Para que el control de errores en modo de usuario funcione, la depuración completa del kernel o la depuración automática del kernel también deben estar habilitadas.

El control de errores en modo de usuario está habilitado de forma predeterminada. Para comprobar el valor de configuración actual, use kdbgctrl -cu. Para deshabilitar esta configuración, use kdbgctrl -du. Para habilitar esta configuración, use kdbgctrl -eu.

Bloqueo de la depuración del kernel

En algunos casos, es posible que desee configurar el equipo de destino para la depuración del kernel, pero esperar a activar la depuración del kernel hasta después de que se inicie el equipo de destino. Puede hacerlo bloqueando la depuración del kernel.

Importante

Antes de usar BCDEdit para cambiar la información de arranque, es posible que deba suspender temporalmente las características de seguridad de Windows, como BitLocker y Arranque seguro, en el equipo de prueba. Vuelva a habilitar estas características de seguridad cuando finalicen las pruebas y administre correctamente el equipo de prueba cuando se deshabiliten las características de seguridad.

Para bloquear la depuración del kernel, configure el equipo de destino mediante comandos similares a los siguientes:

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:32 /start DISABLE /noumex

Al reiniciar el equipo de destino, se preparará para la depuración del kernel, pero se deshabilitará la depuración del kernel y el control de errores en modo de usuario. En ese momento, un equipo host no podrá asociarse al equipo de destino, el depurador del kernel no detectará las comprobaciones de errores y las excepciones en modo de usuario no provocarán una irrupción en el depurador de kernel.

Cuando esté listo, puede habilitar la depuración del kernel (sin reiniciar el equipo de destino) escribiendo los siguientes comandos.

kdbgctrl -db
kdbgctrl -e

Más adelante, puede deshabilitar la depuración del kernel escribiendo los siguientes comandos.

kdbgctrl -d
kdbgctrl -eb

Puede usar kdbgctrl -cb para comprobar si la depuración del kernel está bloqueada.

Tamaño del búfer de DbgPrint

El búfer DbgPrint almacena los mensajes que el equipo de destino ha enviado al depurador de kernel.

Si la depuración completa del kernel está habilitada, estos mensajes aparecerán automáticamente en el depurador de kernel. Pero si esta opción está deshabilitada, estos mensajes se almacenarán en el búfer. En un momento posterior, puede habilitar la depuración del kernel, conectarse a un depurador de kernel y usar la extensión !dbgprint para ver el contenido de este búfer. Para obtener más información sobre este búfer, consulte El búfer DbgPrint.

El tamaño predeterminado del búfer de DbgPrint es de 4 KB en una compilación gratuita de Windows. Para determinar el tamaño actual del búfer, use kdbgctrl -cdb. Para cambiar el tamaño del búfer, use kdbgctrl -sdbSize, donde Size especifica el nuevo tamaño del búfer. Para obtener más información sobre la sintaxis, consulte Opciones de línea de comandos de KDbgCtrl.

Ejemplos

Para mostrar todos los ajustes actuales, utilice el siguiente comando:

kdbgctrl -c -ca -cu -cb -cdb 

Para restaurar la configuración predeterminada, utilice el siguiente comando:

kdbgctrl -e -da -eu -db -sdb 0x1000 

Para bloquear el equipo host de forma que solo se pueda contactar con él en caso de excepción, utilice el siguiente comando:

kdbgctrl -d -ea -eu 

Para deshabilitar toda la depuración del kernel, use el siguiente comando:

kdbgctrl -d -da 

Si va a deshabilitar toda la depuración del kernel, es posible que también desee aumentar el tamaño del búfer de DbgPrint. Esto garantiza que todos los mensajes se guardarán en caso de que necesite verlos más adelante. Si le sobra un megabyte de memoria, puede utilizar el siguiente comando:

kdbgctrl -sdb 0x100000