Reconocer la descripción del depurador de .NET en Visual Studio
En la unidad anterior, aprendió que un depurador le ayuda a controlar la ejecución del programa y observar su estado. En esta sección, aprenderá a hacer ambas tareas en Visual Studio.
Para empezar, aprenderemos a usar el depurador de Visual Studio con .NET.
Introducción al depurador de Visual Studio
Use el botón Iniciar (el triángulo verde sólido) de la barra de comandos de Visual Studio para iniciar la aplicación con el depurador asociado. Observe que la barra de comandos ahora incluye el nombre del proyecto. Una vez que la aplicación se esté ejecutando, estarán disponibles más características y herramientas de depuración adicionales.
- La configuración de la solución especifica si se debe ejecutar la aplicación en modo de Depuración o Versión.
- La configuración de la plataforma especifica una plataforma de CPU de destino
- Inicia la aplicación con el depurador asociado.
- Inicia la aplicación sin el depurador asociado.
Control de la ejecución
Una vez que se ejecuta la aplicación, los controles de depuración aparecen junto al botón Iniciar en el que ha hecho clic para iniciar la aplicación.
- 1) Continuar o pausar la ejecución. Si la ejecución está en pausa en un punto de interrupción, seleccione este botón para continuar hasta que se alcance el siguiente punto de interrupción. Si el programa se está ejecutando, el botón se convertirá en un botón de pausa que puede usar para pausar la ejecución.
- 2) Controles de recarga activa. Esta característica, introducida en Visual Studio 2022, permite realizar cambios y actualizar el código sin reiniciar la aplicación.
- 3) Detener. Este botón detiene la aplicación en ejecución, que también desasocia el depurador.
- 4) Reiniciar. Detiene y vuelve a lanzar la aplicación con el depurador asociado.
- 5) Depurar paso a paso por instrucciones. Si la siguiente instrucción es una llamada de función, vaya hacia abajo a la primera instrucción de código de esta función (igual que el comando
step). - 6) Depurar paso a paso por procedimientos. Si la siguiente instrucción es una llamada de función, ejecute el código, pero continúe inmediatamente a la siguiente línea de código de la función actual.
- Depurar paso a paso para salir, Si está dentro de una función, ejecute el código restante y vuelva a la instrucción después de la llamada de función inicial (igual que el comando
out).
Los puntos de interrupción son una de las características principales de depuración e integración con estos controles, por lo que vamos a explorarlos con más detalle.
Puntos de interrupción
Como aprendió en la unidad anterior, un depurador le ayuda a analizar y controlar la ejecución del programa. Al iniciar la aplicación con el depurador de Visual Studio asociado, el código comienza a ejecutarse inmediatamente. Dado que el código se ejecuta rápidamente, debe poder pausar el programa en cualquier instrucción. Para ello, se usan los puntos de interrupción.
Puede agregar un punto de interrupción en Visual Studio haciendo clic en el lado izquierdo del número de línea, en la línea que quiera interrumpir. Verá un círculo de color rojo después de habilitar el punto de interrupción. Para quitarlo, simplemente vuelva a seleccionar el círculo rojo.
Si hace clic con el botón derecho para agregar un punto de interrupción o haga clic con el botón derecho en un punto de interrupción existente, también puede seleccionar Agregar punto de interrupción condicional. Este tipo especial de punto de interrupción permite definir una condición o criterios para cuando se desencadena el punto de interrupción. Este menú también permite seleccionar la opción Habilitar solo cuando se alcance el siguiente punto de interrupción para crear una ejecución de puntos de interrupción encadenables, entre otras acciones.
También puede usar un punto de interrupción temporal si desea interrumpir el código solo una vez. Para aplicar puntos de interrupción temporales, haga clic con el botón derecho en la columna punto de interrupción y seleccione Insertar punto de interrupción temporal. Los puntos de interrupción temporales se quitarán en cuanto se acceda a ellos.
También puede agregar puntos de seguimiento haciendo clic con el botón derecho en la columna punto de interrupción y seleccionando Insertar punto de seguimiento. Los puntos de seguimiento permiten registrar información en la ventana de salida en condiciones configurables, sin necesidad de modificar ni detener la ejecución del código.
Por último, en la ventana Puntos de interrupción (Depurar>Windows>Puntos de interrupción), puede ver y alternar entre todos los puntos de interrupción que colocó en el código. También puede alternar entre las opciones para interrumpir las excepciones, tanto las detectadas como las no detectadas. Puede usar el panel Puntos de interrupción para examinar el estado del programa y realizar un seguimiento del origen de una excepción mediante la pila de llamadas cuando se produce uno.
Herramientas de depuración de Visual Studio
Después de configurar los puntos de interrupción e iniciar la aplicación, aparecen nuevas ventanas de información y controles en la pantalla.
- Controles de inicio del depurador.
- El punto de interrupción y la línea de ejecución actuales.
- Ventana de monitoreo para monitorear los valores de las variables.
- La ventana de Puntos de interrupción para ver todos los puntos de interrupción.
También puede acceder a otras ventanas de depuración útiles seleccionando Depurar>Windows a lo largo de la barra de navegación superior. Por ejemplo, estas son las herramientas que se usan habitualmente:
- Ventana de pila de llamadas: Permite ver qué métodos fueron llamados.
- Ventana Inmediato: Permite escribir y evaluar expresiones durante la depuración.
- Ventana Automático: agrega inspecciones a variables automáticamente en el contexto actual.
- Ventana Salida: muestra la salida de instrucciones de registro o código que escribe en la consola.
Inspección y edición del estado de las variables
Al analizar la causa de un defecto del programa, puede consultar el estado de las variables en busca de cambios inesperados. Hay varias opciones de ventana de inspección en Visual Studio, que puede usar en diferentes contextos de depuración para supervisar el estado de las variables.
- Ventana Inspección: permite hacer un seguimiento de las variables y expresiones seleccionadas a lo largo del tiempo durante la depuración.
- Ventana de locales: muestra automáticamente las variables en el ámbito y el contexto de ejecución actuales.
- Ventana de Autos: muestra automáticamente cualquier variable usada en la línea que se está ejecutando o en la anterior.
- Ventana Inmediata: permite evaluar expresiones y variables en tiempo real durante la depuración.
La mayoría de estas ventanas también permiten hacer doble clic en el valor de una variable y cambiar su valor durante la depuración.
La ventana Inspección es útil para realizar el seguimiento de variables durante la ejecución del código. Puede hacer clic con el botón derecho en una variable en el editor y seleccionar Agregar para ver. Esa variable se muestra ahora en la ventana inspección y se actualiza automáticamente a medida que se ejecuta la aplicación.
También puede hacer clic con el botón derecho en variables en las ventanas Automático o Variables locales para agregar un reloj.
Otra manera productiva de ver y analizar la información de las variables durante la depuración es mediante DataTips. Cuando se pause en el punto de interrupción, mantenga el puntero sobre cualquier variable del ámbito actual. Aparecerá la Información sobre datos, en la que se mostrarán el nombre y el valor actual de las propiedades variables. Al mantener el puntero sobre un parámetro de función o una variable directamente en la ventana del editor, también podrá inspeccionar su valor.
Pila de llamadas
Cada vez que el programa especifique una función, se agregará una entrada a la pila de llamadas. Cuando la aplicación se vuelva compleja y se llame a funciones dentro de otras funciones de forma repetida, la pila de llamadas representa el rastro de las llamadas a las funciones.
Resulta útil encontrar el origen de una excepción. Si se produce un bloqueo inesperado en el programa, verá algo parecido al ejemplo siguiente en la consola:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9
El grupo de at [...] líneas bajo el mensaje de error se denomina traza de pila. Proporciona el nombre y el origen de cada función a la que se ha llamado antes de terminar con la excepción. Sin embargo, puede ser algo difícil de descifrar, ya que también incluye funciones internas del entorno de ejecución de .NET.
La ventana Pila de llamadas de Visual Studio resulta útil aquí. Filtra la información no deseada y le muestra solo las funciones pertinentes de su código de forma predeterminada. A continuación, puede desenredar esta pila de llamadas para averiguar dónde se originó la excepción.
En la siguiente unidad, hará un ejercicio con el depurador para corregir el error en el código de Fibonacci que vimos anteriormente.
Especificar la configuración del depurador
En Visual Studio, se pueden especificar diversas configuraciones para el comportamiento del depurador. Esto incluye la forma en que se muestran las variables, si se presentan ciertas advertencias, cómo se establecen los puntos de interrupción y cómo éstos afectan a la ejecución de programas. También puede configurar su proyecto para compilar como configuración para Depurar o Liberar.
Para configurar las opciones del depurador, use el menú Herramientas>Opciones>depuración , que proporciona diferentes categorías de opciones. Las opciones más comunes están en la categoría General .