Depurador (Debugger)#

Debugging in Spyder is supported through integration with the enhanced ipdb debugger in the Terminal de IPython. This allows breakpoints and the execution flow to be viewed and controlled right from the Spyder GUI, as well as with all the familiar IPython console commands.

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

Additionally, the Editor shows the line of code the debugger is currently stopped on with an arrow.

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

You can access and edit local and global variables at each breakpoint through the 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#

Generating Matplotlib figures is fully supported while the debugger is active, including all the different graphics backends. Use the %matplotlib magic to change to an interactive backend (e.g. %matplotlib qt5) to pan, zoom and adjust your plots in a separate window, or switch back to the default inline (%matplotlib inline) to see them displayed right in the Gráficos pane.

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.