Compartir a través de


Tutorial: Ejecución de código en el depurador en Visual Studio

En este artículo se presenta el paso 4 de la serie de tutoriales Trabajar con Python en Visual Studio.

Visual Studio proporciona funcionalidades para administrar proyectos, una experiencia de edición completa, la ventana interactiva y una depuración completa para código de Python. En el paso 4 de esta serie de tutoriales, usará el Depurador para ejecutar el código paso a paso, incluida cada iteración de un bucle. En el Depurador, puede pausar su programa siempre que se cumplan ciertas condiciones. En cualquier momento en que el programa esté en pausa, puede examinar todo el estado del programa y cambiar el valor de las variables. Estas acciones son esenciales para el seguimiento de errores del programa y también proporcionan ayuda útil para seguir el flujo exacto del programa.

En el paso 4 del tutorial, aprenderá a:

  • Ejecución de código de Python en el depurador en Visual Studio
  • Establecer puntos de interrupción y condiciones
  • Examen del estado del programa y cambio de variables
  • Explorar las ventanas y acciones del Depurador

Prerrequisitos

Preparación del archivo de Python

Para prepararse para el ejercicio de depuración, siga estos pasos para actualizar el archivo de proyecto de Python para incluir código más sólido:

  1. Abra el archivo de proyecto de Python (.py) en el editor.

  2. Reemplace el código del archivo por el código siguiente. Esta versión del código expande la función make_dot_string para que pueda examinar sus pasos discretos en el depurador. Mueve el bucle for a una función de main y lo ejecuta explícitamente llamando a la función main:

    from math import cos, radians
    
    # Create a string with spaces proportional to a cosine of x in degrees
    def make_dot_string(x):
        rad = radians(x)                             # cos works with radians
        numspaces = int(20 * cos(rad) + 20)          # Scale to 0-40 spaces
        st = ' ' * numspaces + 'o'                   # Place 'o' after the spaces
        return st
    
    def main():
        for i in range(0, 1800, 12):
            s = make_dot_string(i)
            print(s)
    
    main()
    

Iniciar depuración

Ahora estás listo para empezar a revisar tu código de Python actualizado en el depurador .

  1. Para confirmar que el código funciona correctamente, seleccione Depurar>Iniciar depuración en la barra de herramientas o use el método abreviado de teclado F5. Estos comandos ejecutan el código en el Depurador .

    El depurador de no detecta ningún problema, por lo que el programa se ejecuta correctamente. Se abre una ventana de salida y se ven algunas iteraciones del patrón de onda de coseno. Seleccione cualquier clave para cerrar la ventana de salida.

    Sugerencia

    Para cerrar automáticamente la ventana de salida cuando se complete el programa, seleccione Herramientas>Opciones, expanda la pestaña Python>Depuración y desactive la opción Esperar la entrada cuando el proceso se cierre normalmente.

  2. Establezca un punto de interrupción en la instrucción de bucle for mediante uno de los métodos siguientes:

    • Seleccione en el margen izquierdo para la línea de código.
    • Haga clic con el botón derecho en la línea de código y seleccione Punto de interrupción>Insertar punto de interrupción.
    • Coloque el símbolo de intercalación en la línea de código y seleccione Depurar>Alternar punto de interrupción (o use el método abreviado de teclado F9).

    Los puntos de interrupción detienen la ejecución del código en un punto marcado para poder inspeccionar el estado del programa. Aparece un punto rojo en cada línea que tiene un punto de interrupción establecido.

    Captura de pantalla que muestra cómo establecer un punto de interrupción en el depurador en Visual Studio.

  3. Inicie de nuevo el depurador (F5). El código en ejecución del programa se detiene en la línea con el punto de interrupción establecido. Ahora puede inspeccionar la pila de llamadas y examinar variables para este estado del código del programa en ejecución.

    Visual Studio proporciona muchas maneras de observar el código del programa y los datos de ejecución, incluidas las ventanas siguientes:

    • La pila de llamadas muestra el historial de llamadas de función y método por el código del programa.
    • Las variables definidas en el ámbito aparecen en la ventana de Automático.
    • La vista Variables locales muestra todas las variables que Visual Studio encuentra en el ámbito actual (incluidas las funciones), incluso antes de definirlas en el código.

    Para ver la lista completa de ventanas y acciones disponibles, seleccione Depurar>Windows.

    Puede abrir las ventanas del depurador para ver el estado de su programa cuando se encuentra un punto de ruptura:

    Captura de pantalla de las ventanas del depurador que muestran el estado del programa cuando Visual Studio se detiene en un punto de interrupción configurado.

Uso de acciones del depurador

Cuando Visual Studio detiene la ejecución de código en un punto de interrupción, hay varios comandos que puede usar para recorrer el código o ejecutar bloques de código antes de interrumpir de nuevo. Los comandos están disponibles en varios lugares de Visual Studio, incluyendo la barra de herramientas del depurador , el menú Depurar , el menú contextual del botón derecho en el editor de código y a través de métodos abreviados de teclado.

La barra de herramientas Depurador en la parte superior de la ventana de Visual Studio proporciona acceso rápido a los comandos de depuración más comunes.

Captura de pantalla de la barra de herramientas del depurador en Visual Studio.

En la tabla siguiente se resumen estos comandos a medida que aparecen de izquierda a derecha en la barra de herramientas:

Acción Acceso directo Descripción
Continue F5 Ejecute el código hasta llegar al siguiente punto de interrupción o hasta que finalice el programa.
Interrumpir todos Ctrl+Alt+Pausa Pausar un programa de larga duración.
Detener la depuración Mayús+F5 Detenga el programa en el punto actual y salga del Depurador.
Reiniciar Ctrl+Mayús+F5 Detenga el programa en el punto actual y reinicie la ejecución del programa desde el principio en el Depurador.
Mostrar la instrucción siguiente Alt+Núm+\ Vuelva a la siguiente instrucción para que se ejecute en el código. Este comando le ayuda a localizar el punto en su código donde el Depurador está detenido.
Depurar paso a paso por instrucciones F11 Ejecute la siguiente instrucción y deténgala. Si la siguiente instrucción es una llamada a una función, el Depurador da un paso hacia la función y se detiene en la primera línea.
Paso a paso por procedimientos F10 Ejecute la siguiente instrucción, incluida la realización de una llamada a una función (ejecutando todo su código) y aplicando cualquier valor devuelto. Este comando permite omitir fácilmente las funciones que no es necesario depurar.
Paso a paso para salir Mayús+F11 Ejecute el código hasta llegar al final de la función actual, luego avance a la instrucción de llamada y haga una pausa. Este comando es útil cuando no es necesario depurar el resto de la función actual.

Siga estos pasos para trabajar con las acciones de depurador en el código de Python:

  1. Saltar la instrucción de bucle for usando la acción Paso a paso.

    Paso a paso hace que el depurador ejecute la línea de código actual, incluida cualquier función llamada y vuelva a pausar inmediatamente. Después de avanzar, observe que la variable i ahora está definida en las ventanas Locales de Variables locales y Automático.

  2. Paso a paso a la siguiente línea de código, que llama a la función make_dot_string.

    En este caso, Paso a paso hace que el depurador ejecute la función make_dot_string completa y se detenga después de la devolución de la función. El depurador no se detiene dentro de la función a menos que exista un punto de interrupción independiente allí.

  3. Continúe ejecutando paso a paso por procedimientos el código varias veces y observe cómo cambian los valores de las ventanas Variables locales o Automático.

  4. En la ventana de Variables locales o Automáticas, haga doble clic en la columna Valor para editar el valor de una variable. En este ejemplo, cambie el valor de la variable s a 'Hello, Python Application'. Asegúrese de incluir el valor entre comillas simples. Seleccione Escriba o cualquier área fuera del valor para aplicar los cambios.

    Captura de pantalla que muestra cómo cambiar el valor de una variable en la ventana Variables locales durante la depuración en Visual Studio.

  5. Siga paso a paso por el código mediante Entrar en hasta que la llamada a la función make_dot_string.

    Para una función, Entrar en hace que el depurador llame a la función y también ingrese en el código de la función. Cuando el proceso de depuración está dentro de una función, puede examinar sus variables locales y recorrer su código específicamente. En este ejemplo, la acción Entrar en se mueve a la función make_dot_string.

  6. Continúe el paso a paso con Entrar en hasta el retorno de la función make_dot_string.

    Cuando llegue al final del código de la función make_dot_string, el siguiente paso devuelve el *Debugger al bucle for con el nuevo valor de retorno en la variable s.

    A medida que vuelva a avanzar a la instrucción print, observe que la acción Entrar en en la instrucción print no entra en esa función específica. Este comportamiento se debe a que la función print no está escrita en Python. Es código nativo dentro del entorno de ejecución de Python.

  7. Continúe usando Entrar en hasta que esté de nuevo dentro de la función make_dot_string, luego use Salir de la función y observe que el Depurador vuelve al bucle for.

    Con Paso a paso para salir, el depurador ejecuta el resto de la función y, luego, se pausa automáticamente en el código de llamada. Esta acción es útil después de recorrer una parte de una función larga, cuando desee finalizar la observación de la función. Paso a paso para salir recorre el código restante o hasta que llegue a un punto de interrupción explícito establecido en el código de llamada.

  8. Continúe ejecutando el programa hasta que se alcance el siguiente punto de interrupción mediante Continue (F5). Dado que tiene un punto de interrupción establecido en el bucle for, se interrumpe en la siguiente iteración.

    Puede confirmar que el programa continúa ejecutándose observando el valor cambiante de la variable s en la ventana de Variables locales.

Uso de condiciones de punto de interrupción

Recorrer cientos de iteraciones de un bucle puede ser tedioso, por lo que Visual Studio le permite agregar una condición a un punto de ruptura. Cuando se establece una condición de punto de interrupción, el depurador pausa el programa en el punto de interrupción solo cuando se cumple la condición.

Los pasos siguientes muestran cómo definir una condición de punto de interrupción en la instrucción de bucle for para que el depurador de se detenga solo cuando el valor de la variable i supere los 1600:

  1. Para establecer la condición de punto de interrupción, haga clic con el botón derecho en el punto de interrupción rojo y seleccione Condiciones o use el método abreviado de teclado Alt+F9>C.

  2. En el cuadro de diálogo emergente de Configuración del punto de interrupción, configure los siguientes valores para crear la condición:

    1. Establezca el tipo de condición en Expresión Condicional.

    2. Defina la evaluación de la condición para que sea verdadera.

    3. Escriba i > 1600 como valor de condición.

    4. Seleccione Cerrar.

    Captura de pantalla que muestra cómo establecer un punto de interrupción condicional en el depurador en Visual Studio.

  3. Seleccione F5 para continuar con la depuración y la ejecución del programa. Observe que el programa ejecuta muchas iteraciones antes de alcanzar el punto de interrupción condicional.

    Puede confirmar que el depurador pausa correctamente la ejecución del programa cuando alcanza el punto de interrupción condicional. Cuando se cumple la condición, la ventana Variables locales muestra el valor de variable i como 1608.

  4. Para ejecutar el programa hasta la finalización, puede deshabilitar el punto de interrupción y continuar con la ejecución del programa.

    1. Mantenga el puntero sobre el punto rojo y seleccione Deshabilitaro haga clic con el botón derecho en el punto rojo y seleccione Deshabilitar punto de interrupción.

    2. Seleccione Continuar (o presione F5) para ejecutar el programa.

    Cuando finaliza el programa, Visual Studio detiene la sesión de depuración y vuelve al modo de edición.

    También puede eliminar un punto de interrupción. Seleccione el punto rojo o haga clic con el botón derecho en el punto y seleccione Eliminar punto de interrupción. Esta acción también elimina las condiciones definidas.

Sugerencia

En algunas situaciones, como un fallo al iniciar el intérprete de Python en sí mismo, la ventana de salida de Python podría cerrarse inmediatamente después de que el programa finalice sin pausar ni mostrar el aviso Presione cualquier tecla para continuar. Para forzar la pausa y la solicitud, agregue el argumento -i al campo Ejecutar>Argumentos del intérprete en la pestaña depurar. Este argumento coloca el intérprete de Python en modo interactivo después de que se ejecute el código. El programa espera a que seleccione Ctrl+Z+Entrar para cerrar la ventana.

Paso siguiente