Ejercicio: Establecimiento de puntos de interrupción

Completado

Los puntos de interrupción se utilizan para pausar la ejecución durante el proceso de depuración. Esto le permite realizar un seguimiento de las variables y examinar la secuencia en la que se ejecuta el código. Los puntos de interrupción son una excelente manera de iniciar el proceso de depuración.

Establecer un punto de interrupción

Anteriormente, en este módulo completó un ejercicio en el que ejecutó una aplicación en el depurador. La aplicación mostró "mensajes de saludo" en el panel CONSOLA DE DEPURACIÓN. Al final del ejercicio, notó que el código repite el saludo de Andrew de una manera inesperada.

En este ejercicio, usará un punto de interrupción para ayudarle a identificar el problema.

  1. Asegúrese de que el archivo Program.cs contiene el ejemplo de código siguiente:

    /* 
    This code uses a names array and corresponding methods to display
    greeting messages
    */
    
    string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" };
    
    string messageText = "";
    
    foreach (string name in names)
    {
        if (name == "Sophia")
            messageText = SophiaMessage();
        else if (name == "Andrew")
            messageText = AndrewMessage();
        else if (name == "AllGreetings")
            messageText = SophiaMessage();
            messageText = messageText + "\n\r" + AndrewMessage();
    
        Console.WriteLine(messageText + "\n\r");
    }
    
    bool pauseCode = true;
    while (pauseCode == true);
    
    static string SophiaMessage()
    {
        return "Hello, my name is Sophia.";
    }
    
    static string AndrewMessage()
    {
        return "Hi, my name is Andrew. Good to meet you.";
    }
    
  2. Use las herramientas del depurador de Visual Studio Code para establecer un punto de interrupción en la primera línea de código dentro del foreach bucle.

    Captura de pantalla que muestra un punto de interrupción en el código.

    Sugerencia

    Una opción fácil para activar o desactivar un punto de interrupción es seleccionar (clic con el botón izquierdo) el área a la izquierda del número de línea. Los puntos de interrupción también se pueden establecer mediante el Run menú y mediante métodos abreviados de teclado.

  3. En el menú Ejecutar, seleccione Iniciar depuración.

  4. Observe que la ejecución del código se detiene en el punto de interrupción y que la línea de código actual está resaltada en el Editor.

    Captura de pantalla que muestra la ejecución del código en pausa en un punto de interrupción.

  5. En la barra de herramientas Controles de depuración, seleccione Depurar paso a paso por instrucciones.

    Puede mantener el puntero del mouse sobre los botones de la barra de herramientas Controles de depuración para mostrar las etiquetas del botón.

  6. Observe que la ejecución del código avanza a la siguiente línea de código y se detiene:

    messageText = SophiaMessage();
    

    Esta línea de código asigna el valor devuelto del SophiaMessage método a la variable messageTextde cadena .

  7. Dedique un momento a tener en cuenta por qué seleccionar Step Into produjo este resultado.

    • El botón Avanzar se usa para avanzar a la siguiente instrucción ejecutable.
    • Dado que el primer elemento de la names matriz es Sophia y la if instrucción comprueba el nombre Sophia, la expresión se evalúa como true y la ejecución del código se mueve al bloque de código de la if instrucción .
  8. En la barra de herramientas Controles de depuración, seleccione Depurar paso a paso por instrucciones.

  9. Observe que la ejecución del código avanza hasta el SophiaMessage método y se pausa.

    El botón Ingresar ha avanzado a la siguiente línea de código ejecutable. La siguiente línea de código ejecutable no es el siguiente número de línea en el archivo, es la siguiente instrucción en la ruta de ejecución. En este caso, la siguiente instrucción ejecutable es el punto de entrada al método SophiaMessage.

  10. En la barra de herramientas Controles de depuración, seleccione Paso a paso para salir.

  11. Observe que la ejecución del código vuelve a la línea de código que llamó al SophiaMessage método y se detiene.

  12. Dedique un momento a considerar por qué seleccionar Salir produjo este resultado.

    Cuando se encuentra dentro de un método, el botón Salir completa las líneas restantes del método actual y, a continuación, vuelve al contexto de ejecución que invocó el método.

  13. En la barra de herramientas Controles de depuración, seleccione Depurar paso a paso por instrucciones.

  14. Observe que la ejecución del código avanza a la siguiente línea de código y se detiene:

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. Dedique un momento a considerar por qué la ejecución llegó a esta línea de código.

    Aunque la indentación de código implica que esta línea de código forma parte del bloque de código de la instrucción else if, no es así. El uso de llaves {} para definir los bloques de código de esta estructura if - else if habría ayudado a evitar este error. A medida que se escribe el código, el mensaje de Andrew se agregará a messageText cada vez que el bucle itere.

Comprobación de las actualizaciones de código

Una vez que haya aislado un problema en el código, debe actualizar el código y, a continuación, comprobar que el problema se ha corregido.

  1. En la barra de herramientas Controles de depuración, seleccione Detener.

  2. Dedique un minuto a corregir la lógica del código.

    Tiene algunas opciones para corregir el problema identificado en el código. Por ejemplo:

    • Puede mantener las líneas de código existentes y agregar llaves {} a la estructura if para cada bloque de código.

    • Puede combinar las dos líneas de código que siguen a la instrucción final else if , formando una sola instrucción como se indica a continuación:

      else if (name == "AllGreetings")
          messageText = SophiaMessage() + "\n\r" + AndrewMessage();
      

    En cualquier caso, el código actualizado debe incluir la llamada a AndrewMessage dentro del bloque de código cuando name == "AllGreetings".

  3. En el menú Archivo, seleccione Guardar.

  4. Use las herramientas de interfaz de usuario del depurador para borrar el punto de interrupción que estableció anteriormente.

  5. En el menú Ejecutar, seleccione Iniciar depuración.

  6. Compruebe que el código ahora genera los resultados esperados.

    Hello, my name is Sophia.
    
    Hi, my name is Andrew. Good to meet you.
    
    Hello, my name is Sophia.
    Hi, my name is Andrew. Good to meet you.
    
  7. En la barra de herramientas de Controles de depuración, seleccione Detener.

¡Felicidades! Ha usado correctamente el depurador de Visual Studio Code para ayudarle a aislar y corregir un problema lógico.

Resumen

Estos son algunos de los aspectos más importantes que debe recordar de esta unidad:

  • Use puntos de interrupción para pausar la ejecución del código durante una sesión de depuración.
  • Use Depurar paso a paso por instrucciones en la barra de herramientas Controles de depuración para observar la siguiente línea de código ejecutable.
  • Use Paso a paso para salir en la barra de herramientas Controles de depuración para recorrer el método actual y volver a la línea de código que llamó al método.