Tutorial: Depuración de una aplicación de consola de .NET con Visual Studio para Mac

Importante

Microsoft ha anunciado la retirada de Visual Studio para Mac. Visual Studio para Mac ya no se admitirá a partir del 31 de agosto de 2024. De forma alternativa, puede hacer lo siguiente:

Para obtener más información, consulte Anuncio de retirada de Visual Studio para Mac.

En este tutorial se presentan las herramientas de depuración que hay disponibles en Visual Studio para Mac.

Requisitos previos

Uso de la configuración de compilación de depuración

Depuración y Versión son las configuraciones de compilación integradas de Visual Studio. Use la configuración de compilación Depuración para depurar y la configuración de compilación Versión para la distribución final de la versión.

En la configuración de depuración, el programa se compila sin optimizar y con toda la información de depuración simbólica. La optimización complica la depuración, ya que la relación entre el código fuente y las instrucciones generadas es más compleja. La configuración de versión del programa no contiene información de depuración simbólica y está totalmente optimizada.

De forma predeterminada, Visual Studio para Mac usa la configuración de compilación Depuración, por lo que no es necesario cambiarla antes de depurar.

  1. Inicie Visual Studio para Mac:

  2. Abra el proyecto que ha creado en Creación de una aplicación de consola de .NET con Visual Studio para Mac.

    La configuración de compilación actual se muestra en la barra de herramientas. En la siguiente imagen de la barra de herramientas se muestra que Visual Studio está configurado para compilar la versión de depuración de la aplicación:

    Visual Studio toolbar with debug highlighted

Establecer un punto de interrupción

Un punto de interrupción interrumpe temporalmente la ejecución de la aplicación antes de que se ejecute la línea con el punto de interrupción.

  1. Establezca un punto de interrupción en la línea que muestra el nombre, la fecha y la hora. Para ello, coloque el cursor en la línea de código y presione \(command+\). Otra manera de establecer un punto de interrupción es seleccionar Depurar>Alternar punto de interrupción en el menú.

    Para indicar la línea en la que se establece el punto de interrupción, Visual Studio lo resalta y muestra un punto rojo en el margen izquierdo.

    Visual Studio Program window with breakpoint set

  2. Presione (command+entrar) para iniciar el programa en modo de depuración. Otra manera de iniciar la depuración es elegir Depuración>Iniciar depuración en el menú.

  3. Cuando el sistema le pida un nombre, escriba una cadena en la ventana de terminar y luego presione Entrar.

  4. La ejecución del programa se detiene cuando llega al punto de interrupción y antes de que se ejecute el método Console.WriteLine.

    Screenshot of a breakpoint in Visual Studio

Uso de la ventana Inmediato

La ventana Inmediato le permite interactuar con la aplicación que está depurando. Puede cambiar el valor de las variables de forma interactiva para ver cómo afecta esto al programa.

  1. Si la ventana Inmediato no está visible, muéstrela; para ello, elija Ver>Ventanas de depuración>Inmediato.

  2. Escriba name = "Gracie" en la ventana Inmediato y presione Entrar.

  3. Escriba currentDate = currentDate.AddDays(1) en la ventana Inmediato y presione Entrar.

    La ventana Inmediato muestra el nuevo valor de la variable de cadena y las propiedades del valor DateTime.

    Immediate Window in Visual Studio

    La ventana Variables locales muestra los valores de las variables definidas en el método que se ejecuta actualmente. Los valores de las variables que acaba de cambiar se actualizan en la ventana Variables locales.

    Locals Window in Visual Studio

  4. Presione (command+entrar) para continuar con la depuración.

    Los valores mostrados en el terminar corresponden a los cambios realizados en la ventana Inmediato.

    Si no ve el terminal, seleccione Terminal - HelloWorld en la barra de navegación inferior.

    Terminal - Hello World in bottom navigation bar

  5. Presione cualquier tecla para salir de la aplicación.

  6. Cierre ventana de terminal.

Establecimiento de un punto de interrupción condicional

El programa muestra la cadena que escribe el usuario. ¿Qué sucede si el usuario no escribe nada? Puede probarlo con una característica de depuración muy útil denominada Punto de interrupción condicional.

  1. Haga clic pulsando control en el punto rojo que representa al punto de interrupción. En el menú contextual, seleccione Editar punto de interrupción.

  2. En el cuadro de diálogo Editar punto de interrupción, escriba el código siguiente en el campo Y se cumpla la siguiente condición y seleccione Aplicar.

    String.IsNullOrEmpty(name)
    

    Editor showing breakpoint settings panel

    Cada vez que se alcanza el punto de interrupción, el depurador llama al método String.IsNullOrEmpty(name) y se interrumpe en esta línea solo si la llamada al método devuelve true.

    En lugar de una expresión condicional, puede especificar un número de llamadas, que interrumpe la ejecución del programa antes de que una instrucción se ejecute un número especificado de veces.

  3. Presione (command+entrar) para iniciar la depuración.

  4. En la ventana de terminal, presione entrar cuando se le pida que escriba su nombre.

    Como se ha cumplido la condición que especificó (name es null o String.Empty), la ejecución del programa se detiene cuando se alcanza el punto de interrupción.

  5. Seleccione la ventana Variables locales, que muestra los valores de las variables que son locales para el método que se ejecuta actualmente. En este caso, Main es el método que se está ejecutando actualmente. Observe que el valor de la variable name es ""; esto es, String.Empty.

  6. También puede ver que el valor es una cadena vacía escribiendo el nombre de la variable name en la ventana Inmediato y presionando entrar.

    Immediate window showing name is an empty string

  7. Presione (command+entrar) para continuar con la depuración.

  8. En la ventana de terminal, presione cualquier tecla para salir del programa.

  9. Cierre la ventana de terminal.

  10. Para borrar el punto de interrupción, haga clic en el punto rojo en el margen izquierdo de la ventana de código. Otra manera de hacerlo es elegir Depurar > Alternar punto de interrupción mientras se selecciona la línea de código.

Ejecución paso a paso de un programa

Visual Studio también le permite recorrer línea a línea un programa y supervisar su ejecución. Normalmente, establecería un punto de interrupción y seguiría el flujo del programa mediante una pequeña parte de su código de programa. Como este programa es pequeño, puede ejecutar paso a paso el programa entero.

  1. Establezca un punto de interrupción en la llave que marca el inicio del método Main (presione command+\).

  2. Presione (command+entrar) para iniciar la depuración.

    Visual Studio se detiene en la línea con el punto de interrupción.

  3. Presione I (Mayús+Comando+l) o seleccione Depurar>Depurar paso a paso por instrucciones para avanzar una línea.

    Visual Studio resalta y muestra una flecha junto a la siguiente línea de ejecución.

    Visual Studio step into method

    En este punto, la ventana Variables locales muestra que la matriz args está vacía, y name y currentDate tienen valores predeterminados. Además, Visual Studio ha abierto una ventana de consola en blanco.

  4. Presione I (mayús+command+I).

    Visual Studio resalta la instrucción que incluye la asignación de variables name. La ventana Variables locales muestra que name es null, y terminal muestra la cadena "What is your name?" (¿Cómo te llamas?).

  5. Para responder a la solicitud, escriba una cadena en la ventana de consola y presione entrar.

  6. Presione I (mayús+command+I).

    Visual Studio resalta la instrucción que incluye la asignación de variables currentDate. La ventana Variables locales muestra el valor devuelto por la llamada al método Console.ReadLine. En el terminal se muestra la cadena que escribió en el símbolo del sistema.

  7. Presione I (mayús+command+I).

    La ventana Variables locales muestra el valor de la variable currentDate tras la asignación desde la propiedad DateTime.Now. El terminal no se modifica.

  8. Presione I (mayús+command+I).

    Visual Studio llama al método Console.WriteLine(String, Object, Object). El terminal muestra la cadena con formato.

  9. Presione U (mayús+command+U) o seleccione Ejecutar>Paso a paso para salir.

    El terminal muestra un mensaje y espera a que presione una tecla.

  10. Presione cualquier tecla para salir de la aplicación.

Uso de la configuración de compilación de versión

Una vez que ha probado la versión de depuración de la aplicación, también debe compilar y probar la versión de lanzamiento. La versión de lanzamiento incorpora optimizaciones del compilador que afectan negativamente al comportamiento de una aplicación. Por ejemplo, las optimizaciones del compilador que están diseñadas para mejorar el rendimiento pueden crear condiciones de carrera en aplicaciones multiproceso.

Para compilar y probar la configuración de versión de la aplicación de consola, realice los pasos siguientes:

  1. Cambie la configuración de compilación en la barra de herramientas de Depurar a Versión.

    default Visual Studio toolbar with release highlighted

  2. Presione (opción+command+entrar) para ejecutar sin depurar.

Pasos siguientes

En este tutorial, ha usado las herramientas de depuración de Visual Studio. En el siguiente tutorial, publicará una versión de la aplicación que se puede implementar.