Deja de depurar Python con print

A pesar que la función breakpoint() existe desde Python 3.7, muchos desarrolladores aún usan print para depurar. Tal vez por desconocimiento o miedo. Por ello, voy a enseñarte un ejemplo rápido.

Supón que tienes un carrito de compras y quieres calcular el total de la compra, aplicando un descuento. Podrías escribir algo así:

def calcular_total(items):
    total = 0
    for item in items:
        breakpoint() # Aquí se detendrá
        total += item["precio"] * item["cantidad"]
    return total

Al llegar ahí, el programa se detendrá y te dará un prompt (Pdb). Dentro podrás:

  • Inspeccionar variables: p item, p total
  • Avanzar línea a línea: n (next)
  • Entrar en funciones: s (step)
  • Continuar hasta el próximo breakpoint: c (continue)
  • Salir del depurador: q (quit)

Además que podrás ejecutar cualquier expresión Python válida, modificar variables, llamar funciones, etc.

Tres formas de ejecutar el script

Ejecución normal

Para depurar, ejecuta el script como siempre. El programa parará en el primer breakpoint() y abrirá la consola interactiva (Pdb):

uv run demo.py

Ignorar todos los breakpoints

El script corre del tirón, sin pausas. Útil cuando ya terminaste de depurar pero no has borrado los breakpoint(), o es para un entorno de producción.

PYTHONBREAKPOINT=0 uv run demo.py

Modo post-mortem

Útil en scripts que no tienen breakpoint(). Corre normal y, si algo falla, te deja la consola pdb justo en el punto del error para inspeccionar el estado exacto en que reventó.

uv run python -m pdb -c continue demo.py

Comandos

Comando Acción
n (next) ejecuta la línea actual, sin entrar en funciones
s (step) igual pero entra dentro de la función llamada
c (continue) sigue hasta el próximo breakpoint o el final
l (list) muestra el código alrededor de la línea actual
p expr imprime una variable o expresión: p total
pp expr igual pero con pretty print, útil para dicts y listas
w (where) muestra la pila de llamadas
a (args) muestra los argumentos de la función actual
r (return) ejecuta hasta el return de la función actual
q (quit) aborta la ejecución
h (help) ayuda general; h <comando> para el detalle de uno

Apuntes finales

Las ventajas de usar breakpoint() y pdb son muchas:

  • No ensucia el código con print que luego hay que borrar.
  • Permite inspeccionar el estado del programa en cualquier punto.
  • Puedes modificar variables y probar cambios al vuelo.
  • Paras la ejecución en cualquier momento, no solo cuando hay un error.

Y además, es una herramienta estándar de Python.

Dale una oportunidad y verás cómo mejora tu flujo de trabajo.

¡Feliz depuración!

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Will you buy me a coffee?

Comments

Javier Perez

Pero que diferencia hay en usar esto y el depurador de un IDE? Supongo que esta al estar en python será siempre igual, independiente del IDE que uses. Pero hay mas ventajas?
1 answers

Andros Fenollosa

La diferencia es que puedes hacer debugging desde la shell, o terminal. Sin necesidad de tener una IDE o editor de código: ¡todo a golpe de comando!

Written by Andros Fenollosa

June 19, 2026

2 min of reading

You may also like

Visitors in real time

You are alone: 🐱