Share via


Fundamentos de la depuración: puntos de interrupción

Actualización: noviembre 2007

Este tema se aplica a:

Edición

Visual Basic

C#

C++

Web Developer

Express

Standard

Pro y Team

Leyenda de la tabla:

Se aplica

No procede

Comando o comandos ocultos de manera predeterminada.

Un punto de interrupción es una señal que indica al depurador que debe suspender temporalmente la ejecución del programa en un punto determinado. Cuando la ejecución se suspende en un punto de interrupción, se dice que el programa se encuentra en modo de interrupción. El paso al modo de interrupción no significa el fin de la ejecución del programa. La ejecución puede reanudarse en cualquier momento.

El modo de interrupción se puede considerar un tiempo de espera. Todos los elementos, por ejemplo, permanecen en la memoria (las funciones, variables y objetos), pero se suspenden sus movimientos y actividades. Durante el modo de interrupción, puede examinar sus posiciones y estados para buscar infracciones o errores. Puede realizar ajustes en el programa. Por ejemplo, puede cambiar el valor de una variable. También puede mover el punto de ejecución, con lo cual se modifica la instrucción que se ejecutará a continuación cuando prosiga la ejecución. En C++, C# y Visual Basic, puede incluso cambiar el código gracias a una eficaz función denominada Editar y continuar.

Los puntos de interrupción son una útil herramienta que permite suspender la ejecución donde y cuando sea preciso. En lugar de recorrer el código línea a línea o instrucción a instrucción, puede dejar que el programa se ejecute hasta encontrar un punto de interrupción, y entonces comenzar la depuración. Con ello, el proceso de depuración se acelera enormemente. Sin esta capacidad, sería prácticamente imposible depurar un programa de gran tamaño.

Numerosos lenguajes de programación cuentan con instrucciones o construcciones que suspenden la ejecución y dejan el programa en modo de interrupción. Visual Basic, por ejemplo, incluye la instrucción Stop. Los puntos de interrupción son distintos de estas instrucciones, ya que no son código fuente que haya que agregar al programa. No hay que escribir una instrucción de punto de interrupción en una ventana de código fuente. Los puntos de interrupción se solicitan a través de la interfaz del depurador, y es el depurador el que los establece automáticamente. Para insertar un punto de interrupción en una línea, sólo tiene que hacer clic en el margen gris junto a la línea en cuestión. También es posible agregar puntos de interrupción más complejos a través de la ventana Puntos de interrupción.

Los puntos de interrupción presentan numerosas ventajas frente a las construcciones de depuración, como la instrucción Stop de Visual Basic. Los puntos de interrupción pueden eliminarse o cambiarse sin tener que modificar el código fuente del programa. Debido a que no son instrucciones, nunca generan código adicional cuando se crea una versión de distribución del programa. Si utiliza instrucciones Stop en su programa, antes de generar la versión de lanzamiento deberá eliminar manualmente dichas instrucciones Stop o usar instrucciones condicionales, como se muestra a continuación:

#If DEBUG Then
    Stop
#End If

Si desea deshabilitar una instrucción Stop temporalmente, tendrá que buscarla en el código y marcarla como comentario:

 ' Stop

Esto no es problemático si sólo tiene una instrucción Stop. Sin embargo, puede llevar mucho tiempo si tiene que depurar un programa de gran tamaño con muchas instrucciones Stop, buscar todas las instrucciones y marcarlas como comentario. Los puntos de interrupción pueden seleccionarse, deshabilitarse o habilitarse fácilmente desde la ventana Puntos de interrupción.

Por último, los puntos de interrupción tienen una gran ventaja sobre las instrucciones Stop en cuanto a su flexibilidad. Una instrucción Stop hace que la ejecución se detenga en la línea en la que se encuentra. Un punto de interrupción situado en una línea del código fuente tendrá el mismo efecto. También puede establecerse un punto de interrupción en una función o en una dirección de memoria, lo que no es posible con las instrucciones Stop. Además de estos puntos de interrupción asociados a una ubicación, el depurador de Visual Studio ofrece puntos de interrupción de datos. Los puntos de interrupción de datos se establecen para una variable global o local, y no para un punto específico del código. El punto de interrupción de datos hace que se detenga la ejecución del programa cuando el valor de la variable cambia.

Para lograr una flexibilidad aún mayor, el depurador de Visual Studio permite establecer propiedades que modifican el comportamiento de los puntos de interrupción:

  • El Recuento de visitas permite determinar cuántas veces se pasa por un punto de interrupción antes de detener la ejecución. De forma predeterminada, el depurador detiene la ejecución cada vez que se llega al punto de interrupción. Puede establecer un recuento de visitas para indicar al depurador que detenga la ejecución después de llegar dos veces al punto de interrupción, o 10 veces, 512 veces o la cantidad de veces que desee. Los recuentos de visitas resultan útiles, porque algunos errores no aparecen la primera vez que el programa ejecuta un bucle, llama a una función, o tiene acceso a una variable. En ocasiones, puede que el error no se manifieste hasta la iteración número 100 o 1000. Para depurar estos problemas, puede establecer un punto de interrupción con un recuento de visitas de 100 o 1000.

  • Condición es una expresión que determina si el punto de interrupción tiene efecto o no. Cuando el depurador llega al punto de interrupción, evalúa la condición. El punto de interrupción sólo detiene la ejecución si la condición se cumple. Puede utilizar una condición con un punto de interrupción de ubicación para detener la ejecución en un lugar determinado únicamente si la condición se cumple. Por ejemplo, supongamos que va a depurar un programa en un banco, y que no se permite que el saldo de una cuenta sea inferior a cero. Puede establecer puntos de interrupción en lugares específicos del código y asociar a cada uno la condición balance < 0. Cuando se ejecute el programa, la ejecución se interrumpirá en esos puntos si el saldo es inferior a cero. Entonces podrá examinar las variables y el estado del programa en la ubicación del primer punto de interrupción, continuar la ejecución hasta el segundo, etc.

  • Acción especifica algo que debería ocurrir cuando se llega al punto de interrupción. De manera predeterminada, el depurador interrumpe la ejecución, pero puede elegir imprimir un mensaje o ejecutar una macro de Visual Studio. Si decide imprimir un mensaje en lugar de interrumpir, el punto de interrupción tiene un efecto muy similar a una instrucción Trace. Esta forma de utilizar los puntos de interrupción se denomina puntos de seguimiento.

  • Filtro proporciona una manera de especificar un proceso o subproceso para el punto de interrupción.

    Nota:

    Una técnica especialmente útil consiste en establecer puntos de interrupción en la ventana Pila de llamadas. En la ventana Pila de llamadas, puede establecer un punto de interrupción en una llamada a una función específica. Esto es muy conveniente cuando se depura una función recursiva, una función que se llama a sí misma. Si detiene la ejecución después de cierto número de llamadas, podrá usar la ventana Pila de llamadas para establecer un punto de interrupción en alguna de las llamadas anteriores que todavía no se han devuelto. El depurador encontrará ese punto de interrupción y detendrá la ejecución durante el camino de regreso desde las llamadas actuales.

Vea también

Tareas

Cómo: Utilizar la ventana de puntos de interrupción

Conceptos

Puntos de interrupción y puntos de seguimiento

Puntos de interrupción y puntos de seguimiento

Otros recursos

Guía básica del depurador