Compartir a través de


Paso 4: Ejecución de código en el depurador

Paso anterior: Uso de la ventana interactiva de REPL

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 depurador, puede ejecutar el código paso a paso, incluida cada una de las iteraciones de un bucle. También puede pausar el programa cuando ciertas condiciones sean verdaderas. En cualquier momento en el que el programa esté pausado en el depurador, puede examinar el estado del programa completo y cambiar el valor de las variables. Estas acciones son esenciales para el seguimiento de los errores de programa y también proporcionan una ayuda útil para seguir el flujo del programa exacto.

  1. Reemplace el código del archivo PythonApplication1.py por el código siguiente. Esta variación del código expande make_dot_string para que pueda examinar sus pasos discretos en el depurador. También coloca el bucle for en una función main y lo ejecuta explícitamente mediante una llamada a esa función:

    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()
    
  2. Compruebe que el código funciona correctamente presionando F5 o seleccionando el comando de menú Depurar>Iniciar depuración. Este comando ejecuta el código en el depurador. De momento, no se ha hecho nada para pausar el programa mientras se ejecuta; solo imprimirá un patrón ondulado para unas cuantas iteraciones. Presione cualquier tecla para cerrar la ventana de salida.

    Sugerencia

    Para cerrar la ventana de salida automáticamente cuando se complete el programa, seleccione el comando de menú Herramientas>Opciones, expanda el nodo Python, seleccione Depuración y, después, desactive la opción Esperar la entrada cuando el proceso se cierre normalmente:

    Python debugging option to close the output window on normal program exit

    Para obtener más información sobre la depuración y sobre cómo establecer argumentos de script e intérprete, vea Depuración del código de Python.

  3. Establezca un punto de interrupción en la instrucción for haciendo clic una vez en el margen gris junto a esa línea o colocando el operador exponencial en dicha línea y usando el comando Depurar>Alternar puntos de interrupción (F9). Aparecerá un punto rojo en el margen gris para indicar el punto de interrupción (como indica la flecha a continuación):

    Setting a breakpoint

  4. Vuelva a iniciar el depurador (F5) y verá que, al ejecutar el código, se detiene en la línea en que se ha establecido el punto de interrupción. Aquí puede inspeccionar la pila de llamadas y examinar variables. Las variables que están en dentro del ámbito aparecen en la ventana Automático cuando están definidas; también puede cambiar a la vista Variables locales, situada en la parte inferior de esa ventana, para mostrar todas las variables que Visual Studio encuentre en el ámbito actual (influidas funciones), incluso antes de que se definan:

    Breakpoint UI experience for Python

  5. Observe la barra de herramientas de depuración (que se muestra a continuación) a lo largo de la parte superior de la ventana de Visual Studio. Esta barra de herramientas proporciona acceso rápido a los comandos de depuración más comunes (que también se pueden encontrar en el menú Depurar):

    Essential debugging toolbar buttons

    Los botones son los siguientes de izquierda a derecha:

    Botón Comando
    Continuar (F5) Ejecuta el programa hasta el siguiente punto de interrupción o hasta la finalización del programa.
    Interrumpir todo (CTRL+Alt+Inter) Pone en pausa un programa de ejecución prolongada.
    Detener depuración (Mayús+F5) Detiene el programa dondequiera que esté y sale del depurador.
    Reiniciar (CTRL+Mayús+F5) Detiene el programa dondequiera que esté y lo reinicia desde el principio en el depurador.
    Mostrar la instrucción siguiente (Alt+Núm*) Cambia a la siguiente línea de código que se debe ejecutar. Esto resulta útil si al navegar por el código durante una sesión de depuración quiere volver rápidamente al punto donde se pausó el depurador.
    Paso a paso por instrucciones (F11) Ejecuta la siguiente línea de código, entrando en las funciones llamadas.
    Paso a paso por procedimientos (F10) Ejecuta la siguiente línea de código sin entrar en las funciones llamadas.
    Paso a paso para salir (Mayús+F11) Ejecuta el resto de la función actual y se pausa en el código de llamada.
  6. Depure paso a paso por procedimientos la instrucción for mediante Paso a paso por procedimientos. La ejecución paso a paso significa que el depurador ejecuta la línea de código actual, incluidas las llamadas de función y luego se pone en pausa otra vez inmediatamente. Observe en el código cómo la variable i ahora está definida en las ventanas Variables locales y Automático.

  7. Depure paso a paso por procedimientos la siguiente línea de código, que llama a make_dot_string y se pone en pausa. Depurar paso a paso significa aquí que el depurador ejecuta toda la función make_dot_string y se pone en pausa cuando se devuelve. El depurador no se detiene dentro de esa función a menos que exista un punto de interrupción independiente.

  8. 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.

  9. En la ventana Variables locales o Automático, haga doble clic en la columna Valor para las variables i o s a fin de editar el valor. Presione ENTRAR o seleccione cualquier área fuera de ese valor para aplicar los cambios.

  10. Continúe ejecutando paso a paso el código usando Paso a paso por instrucciones. Depurar paso a paso por instrucciones significa que el depurador entra dentro de cualquier llamada de función para la que tenga información de depuración, como make_dot_string. Una vez dentro de make_dot_string puede examinar sus variables locales y recorrer su código en concreto.

  11. Continúe con la ejecución paso a paso por instrucciones y tenga en cuenta que, cuando llegue al final de la función make_dot_string, el paso siguiente vuelve al bucle for con el nuevo valor devuelto en la variable s. Mientras ejecuta de nuevo la instrucción print, observe que Paso a paso por instrucciones en print no entra en esa función. Esto se debe a que print no está escrita en Python, sino que es código nativo dentro del tiempo de ejecución de Python.

  12. Continúe usando Paso a paso por instrucciones hasta que esté de nuevo en la mitad de make_dot_string. Luego, use Paso a paso para salir y observe que 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. Esto resulta útil cuando ha recorrido una parte de una función larga que se quiere depurar. Recorrerá el resto y no establecerá un punto de interrupción explícito en el código de llamada.

  13. Para continuar ejecutando el programa hasta que se alcance el siguiente punto de interrupción, use Continuar (F5). Puesto que hay un punto de interrupción en el bucle for, la interrupción se producirá en la siguiente iteración.

  14. Recorrer cientos de iteraciones de un bucle puede resultar tedioso, por lo que Visual Studio le permite agregar una condición a un punto de interrupción. De esta forma, el depurador pausa el programa en el punto de interrupción solo cuando se cumple la condición. Por ejemplo, puede usar una condición con el punto de interrupción en la instrucción for de modo que solo se ponga en pausa cuando el valor de i sea superior a 1600. Para establecer la condición, haga clic con el botón derecho en el punto rojo del punto de interrupción y seleccione Condiciones (Alt+F9>C). En el elemento emergente Configuración del punto de interrupción que aparece, escriba i > 1600 como expresión y seleccione Cerrar. Presione F5 para continuar y observe que el programa ejecuta muchas iteraciones antes de la interrupción siguiente.

    Setting a breakpoint condition

  15. Para ejecutar el programa hasta su finalización, deshabilite el punto de interrupción haciendo clic con el botón derecho en el punto del margen y seleccionando Deshabilitar punto de interrupción (Ctrl+F9). Luego, seleccione Continuar (o presione F5) para ejecutar el programa. Cuando se finalice el programa, Visual Studio detiene la sesión de depuración y vuelve a su modo de edición. También puede eliminar el punto de interrupción si selecciona su punto, o bien si hace clic con el botón derecho en el punto y selecciona Eliminar punto de interrupción. También elimina cualquier condición que se haya establecido anteriormente.

Sugerencia

En algunas situaciones, como un error al iniciar el intérprete de Python, la ventana de salida puede aparecer solo brevemente y luego cerrarse de forma automática sin darle la oportunidad de ver los mensajes de error. Si esto ocurre, haga clic con el botón derecho en el proyecto en el Explorador de soluciones, seleccione Propiedades, la pestaña Depurar y, después, agregue -i al campo Argumentos del intérprete. Este argumento hace que el intérprete entre en modo interactivo una vez que se haya finalizado un programa, con lo que la ventana se mantendrá abierta hasta que pulse Ctrl+Z>Entrar para salir.

Paso siguiente

Profundizar un poco más