Compartir a través de


Controlar el destino

Mientras depura una aplicación de destino en modo de usuario o un equipo de destino en modo kernel, el destino se puede ejecutar o detener.

Cuando el depurador se conecta a un destino en modo kernel, el depurador deja el destino en ejecución, a menos que use la opción de línea de comandos -b, el sistema de destino ha dejado de responder (es decir, bloqueado) o el sistema de destino todavía se detiene debido a una acción anterior de depuración del kernel.

Cuando el depurador se inicia o se conecta a un destino en modo de usuario, el depurador detiene inmediatamente el destino, a menos que use la opción de línea de comandos -g . Para obtener más información, vea Punto de interrupción inicial.

Cuando el destino se está ejecutando

Cuando se ejecuta el destino, la mayoría de las acciones del depurador no están disponibles.

Si desea detener un destino en ejecución, puede emitir un comando Break . Este comando hace que el depurador se interrumpa en el destino. Es decir, el depurador detiene el destino y se asigna todo el control al depurador. Es posible que la aplicación no se interrumpa inmediatamente. Por ejemplo, si todos los subprocesos están ejecutando código del sistema o están en una operación de espera, la aplicación se interrumpe solo después de que el control haya devuelto al código de la aplicación.

Si un destino en ejecución encuentra una excepción, si se producen determinados eventos , si se alcanza un punto de interrupción o si la aplicación se cierra normalmente, el destino se divide en el depurador. Esta acción detiene el destino y proporciona todo el control al depurador. Aparece un mensaje en la ventana Comando del depurador y describe el error, el evento o el punto de interrupción.

Cuando se detiene el destino

Para iniciar o controlar la ejecución del destino, puede hacer lo siguiente:

  • Para que la aplicación empiece a ejecutarse, emita el comando Go .

  • Para recorrer paso a paso por la aplicación una instrucción cada vez, use los comandos Paso a paso por instrucciones o Paso a paso por encima . Si se produce una llamada de función, Step Into entra en la función y continúa recorriendo cada instrucción. Paso a paso trata la llamada de función como un solo paso. Cuando el depurador está en modo ensamblado, la ejecución paso a paso se produce una instrucción de máquina a la vez. Cuando el depurador está en modo de origen, la ejecución paso a paso se produce una línea de origen a la vez.

  • Para finalizar la función actual y detener cuando se produzca la devolución, use los comandos Paso a paso a paso o Seguimiento y Inspección . El comando Step Out continúa hasta que finaliza la función actual. Seguimiento y Inspección continúa hasta que finaliza la función actual y también muestra un resumen de las llamadas de la función. Sin embargo, debe emitir el comando Trace y Watch en la primera instrucción de la función en cuestión.

  • Si se produce una excepción, puede usar los comandos Go with Exception Handled y Go with Exception Not Handled para reanudar la ejecución y controlar el estado de la excepción. (Para obtener más información sobre las excepciones, consulte Controlar excepciones y eventos).

  • (Solo WinDbg) Si selecciona una línea en la ventana Desensamblado o una ventana Origen y, a continuación, usa el comando Ejecutar al cursor , el programa se ejecuta hasta que encuentra la línea seleccionada.

  • (Solo modo de usuario) Para cerrar la aplicación de destino y reiniciarla desde el principio, use el comando Reiniciar . Puede usar este comando solo con un proceso que creó el depurador. Una vez reiniciado el proceso, se interrumpe inmediatamente en el depurador.

  • (Solo WinDbg) Para cerrar la aplicación de destino y borrar el depurador, use el comando Detener depuración . Este comando le permite iniciar la depuración de un destino diferente.

Formularios de comandos

La mayoría de los comandos para iniciar o controlar la ejecución del destino existen como comandos de texto, comandos de menú, botones de barra de herramientas y teclas de método abreviado. Como comandos de texto básicos, puede usar estos comandos en CDB, KD o WinDbg. (La forma de texto de los comandos admite con frecuencia opciones adicionales, como cambiar la ubicación del contador del programa o ejecutar un número fijo de instrucciones). Puede usar los comandos de menú, los botones de la barra de herramientas y las teclas de método abreviado en WinDbg.

Puede usar los comandos en los formularios siguientes.

Get-Help Comando WinDbg Teclas de método abreviado de WinDbg Efecto

Depuración | Ejecutar hasta el cursor

F7

CTRL + F10

(Solo WinDbg) Se ejecuta hasta que llega a la línea que marca el cursor.

Depuración | Detener depuración

MAYÚS + F5

Detiene toda la depuración y cierra el destino.

(Solo CDB/KD) CTRL+C

Depuración | Quebrar

CTRL + INTERRUMPIR

La ejecución se detiene y el depurador se divide en el destino.

.restart (Reiniciar aplicación de destino)

Depuración | Reanudar

CTRL + MAYÚS + F5

(Solo modo de usuario) Reinicia la aplicación de destino.

g (Ir)

Depuración | Ir

F5

El destino se ejecuta libremente.

gc (Ir desde el punto de interrupción condicional)

Reanuda la ejecución después de un punto de interrupción condicional.

gh (Ir con control de excepciones)

Depuración | Excepción controlada de Go

Igual que g (Go), salvo que la excepción actual se trata como controlada.

gn (Ir con excepción no controlada)

Depuración | Ir a excepción no controlada

Igual que g (Go), salvo que la excepción actual se trata como no controlada.

gu (Subir)

Depuración | Salir

MAYÚS + F11

El destino se ejecuta hasta que se completa la función actual.

p (paso)

Depuración | Paso a paso por encima

F10

El destino ejecuta una instrucción. Si esta instrucción es una llamada de función, esa función se ejecuta como un solo paso.

pa (paso a dirección)

El destino se ejecuta hasta que alcanza la dirección especificada. Se muestran todos los pasos de esta función (pero los pasos de las funciones llamadas no).

pc (paso a siguiente llamada)

El destino se ejecuta hasta la siguiente instrucción de llamada . Si la instrucción actual es una instrucción de llamada , esta llamada se ejecuta completamente y la ejecución continúa hasta la siguiente llamada.

pct (paso a siguiente llamada o devolución)

El destino se ejecuta hasta que alcanza una instrucción de llamada o una instrucción de devolución .

ph (Paso a siguiente instrucción de bifurcación)

El destino se ejecuta hasta que alcanza cualquier tipo de instrucción de bifurcación, incluidas ramas condicionales o incondicionales, llamadas, devoluciones y llamadas del sistema.

pt (Paso a siguiente devolución)

El destino se ejecuta hasta que alcanza una instrucción de devolución .

t (seguimiento)

Depuración | Entrar

F11

F8

El destino ejecuta una instrucción. Si esta instrucción es una llamada de función, el depurador realiza un seguimiento en esa llamada.

ta (Seguimiento a dirección)

El destino se ejecuta hasta que alcanza la dirección especificada. Se muestran todos los pasos de esta función y las funciones llamadas.

tb (Seguimiento a la rama siguiente)

(Todos los modos, excepto el modo kernel, solo en sistemas basados en x86) El destino se ejecuta hasta que llega a la siguiente instrucción de rama.

tc (Seguimiento a llamada siguiente)

El destino se ejecuta hasta la siguiente instrucción de llamada . Si la instrucción actual es una instrucción de llamada , la instrucción se realiza un seguimiento hasta que se alcanza una nueva llamada .

tct (seguimiento a siguiente llamada o devolución)

El destino se ejecuta hasta que alcanza una instrucción de llamada o devuelve instrucciones. Si la instrucción actual es una instrucción de llamada o una instrucción de devolución , la instrucción se realiza un seguimiento hasta que se alcanza una nueva llamada o devolución .

th (Seguimiento a siguiente instrucción de bifurcación)

El destino se ejecuta hasta que alcanza cualquier tipo de instrucción de bifurcación, incluidas ramas condicionales o incondicionales, llamadas, devoluciones y llamadas del sistema. Si la instrucción actual es una instrucción de bifurcación, la instrucción se realiza un seguimiento hasta que se alcanza una nueva instrucción de bifurcación.

tt (seguimiento a siguiente devolución)

El destino se ejecuta hasta que alcanza una instrucción de devolución . Si la instrucción actual es una instrucción de retorno , la instrucción se realiza un seguimiento hasta que se alcanza un nuevo retorno .

wt (seguimiento y inspección de datos)

El destino se ejecuta hasta la finalización de toda la función especificada. A continuación, se muestran las estadísticas.

Para obtener más información sobre cómo reiniciar el equipo de destino, consulte Bloqueo y reinicio del equipo de destino.

Opciones de la línea de comandos

Si no desea que la aplicación se detenga inmediatamente cuando se inicie o cargue, use CDB o WinDbg junto con la opción de línea de comandos -g . Para obtener más información sobre esta situación, vea Punto de interrupción inicial.

CDB y WinDbg también admiten la opción de línea de comandos -G. Esta opción hace que la sesión de depuración finalice si la aplicación se completa correctamente.

El siguiente comando intenta ejecutar la aplicación de principio a fin y el símbolo del sistema del depurador solo aparece si se produce un error.

cdb -g -G ApplicationName 

Puede usar la opción de línea de comandos -pt para establecer el tiempo de espera de interrupción. Hay ciertos problemas que pueden hacer que el destino no pueda comunicarse con el depurador. Si se emite un comando break y el depurador no puede interrumpir el destino después de este tiempo, el depurador muestra un mensaje de tiempo de espera de interrupción.

En este punto, el depurador deja de intentar dividirse en el destino. En su lugar, el depurador pausa el destino y le permite examinar (pero no controlar) la aplicación de destino.

El tiempo de espera predeterminado es de 30 segundos.