Depurador (Debugger)#

La depuración en Spyder es compatible a través de la integración con el depurador mejorado de ipdb en la consola Terminal de IPython. Esto permite que los puntos de interrupción y el flujo de ejecución sean vistos y controlados directamente desde el Spyder GUI, así como con todos los comandos conocidos de la consola IPython.

A Spyder IPython console window, showing the ipdb debugger in action

Depurando con ipdb#

Puedes controlar completamente la ejecución del depurador desde el menú Depurar de la Barra de herramientas de depuración y a través de atajos de teclado configurables, junto con el estándar ipdb comandos de consola.

A Spyder IPython console window, showing debugging from toolbar

Además, el Editor muestra la línea de código en la que el depurador se detiene con una flecha.

Spyder Editor showing the debugging panel

El depurador de Spyder ofrece resaltado de sintaxis, terminación de código e historial de comandos, que funcionan exactamente como lo hacen en el intérprete interactivo normal.

Usa las flechas arriba y abajo para recordar comandos anteriores, y pulsa Tab para activar sugerencias de autocompletado.

A Spyder IPython console window, showing autocompletion when debugging

Además, las funciones mágicas de IPython están disponibles en modo de depuración. Puedes, por ejemplo, ejecutar %ls para listar los contenidos de tu directorio de trabajo actual o %timeit para comprobar cuán rápido es un fragmento de código dado.

Ipython console in debug mode showing timeit magic

Por último, puedes introducir y ejecutar sentencias multilíneas en el depurador de Spyder de la misma forma que con la petición IPython habitual, para ejecutar fácilmente código complejo.

Debugger showing multiline debugger

Puntos de interrupción#

El depurador de Spyder está integrado con el panel de Breakpoints, el cual muestra el archivo, la línea y la condición (si existe) de cada punto de interrupción definido. Para abrirlo, selecciona Depurar ‣ Listar puntos de interrupción, o pulsa Ctrl-Shift-B (Cmd-Shift-B en macOS).

Spyder's Breakpoints panel, with a number of examples showing file, line number and an optional condition

Hay varias maneras diferentes de establecer y limpiar los puntos de interrupción:

  • Con la opción Añadir o eliminar un punto de interrupción en el menú depuración.

  • Presionando el atajo de teclado configurable (F12 para normal, o Shift-F12 para puntos de interrupción condicional por defecto).

  • Al hacer clic a la izquierda del número de línea en un archivo abierto en el Editor (agregando Shift para un punto de interrupción condicional).

  • Con la función incorporada breakpoint() en tu código.

  • Interactivamente, usando el comando b en una sesión de depuración.

Spyder showing setting conditional breakpoint

Puedes acceder y editar variables locales y globales en cada punto de interrupción a través del Explorador de variables.

Spyder's console and variable explorer showing local and global variables when debugging

Funcionalidades avanzadas#

Puedes evitar pasar por otros paquetes de Python mientras depuras activando Ignorar las librerías de Python mientras se depura en las preferencias de Spyder, bajo Terminal de IPython ‣ Depurador ‣ Depurar. Esto omitirá todos los módulos Python integrados y de terceros que haya instalado.

Spyder's preferences showing Ignore Python libraries while debugging options

Si tu código tiene variables con los mismos nombres que los comandos Pdb (por ejemplo, b o step), todavía puedes referirte a ellos como normales mientras depuras. Para llamar al comando Pdb correspondiente, simplemente agrega un punto de exclamación antes de él (por ejemplo, !b o !step).

Spyder's IPython console showing Pdb commands

Puedes hacer que Spyder ejecute automáticamente un fragmento de código personalizado cada vez que el depurador se detiene. Por ejemplo, puedes usar esto para establecer variables específicas, o importar módulos usados comúnmente para que estén siempre disponibles durante la depuración. Para configurar esto, vaya a Preferencias ‣ Terminal de IPython ‣ Depurador ‣ Ejecutar código al depurar, e introduce el código que deseas que se ejecute con cada paso.

Spyder's preferenes with debugging snippet

Soporte Matplotlib#

La generación de figuras de Matplotlib está totalmente soportada mientras el depurador está activo, incluyendo todos los diferentes backends gráficos. Utilice la magia %matplotlib para cambiar a un backend interactivo (por ejemplo, %matplotlib qt5) para anclar, acercar y ajustar tus gráficas en una ventana separada, o vuelve al inline predeterminado (%matplotlib inline) para verlos mostrados directamente en el panel Gráficos.

Debugger showing matplotlib interactive backend

Para evitar mostrar gráficos mientras se depura, desactiva la opción Procesar ejecución de eventos al depurar en Preferencias ‣ Terminal de IPython ‣ Depurador.