PDB++ es una joya!
pdbpp
es una alternativa avanzada al depurador pdb
incorporado en
Python. Es una extensión de pdb
que agrega varias características útiles para
la depuración de código Python, como el resaltado de sintaxis, autocompletado,
modo interactivo (sticky
) y mucho mas.
|
|
Breakpoints
Codigo
Pon una de estas lineas donde quieras parar la ejecución:
|
|
Para depurar, ejeucta:python foo.py
Interactivamente
Puedes usar el modulo pdb
directamente: python -m pdb foo.py
(Pdb++) b <file>/<function>/<class>:<lineno>, <condition>
(Pdb++) b foo:6
(Pdb++) h # or help
(Pdb++) c # or continue
Usando .pdbrc
pdbpp
lee automaticamente el archivo .pdbrc
si existe lo que es muy comodo
para tener tus breakpoints
explicitos en un fichero y evitar modificar el
codigo o tener que escribirlos cada vez en la consola:
nvim .pdbrc
:
# .pdbrc
print("Hello from {__file__}")
Ejecuta: python foo.py
Esto permite tener un fichero por proyecto estandarizando el debugging, evitando por ejemplo modificar el codigo si no quieres. Compartiendo ese fichero otros pueden debuggear siguiendo el mismo patrón, etc.
También es posible definir un
.pdbrc
global creando un~/.pdbrc
. Todos los proyectos.
Configuración
Es posible cambiar la configuracion por defecto de pdbpp:
nvim ~/.pdbrc.py
|
|
Features favoritas
Función pdb.disable()
Omite los breakpoints que tengas en el codigo o en .pdbrc
:
|
|
Comando edit
En modo intercativo:
edit foo
Abre foo
usando $EDITOR
, require reiniciar el debugger para que tenga
efecto.
Comando display
En modo intercativo / .pdbrc
display a
Cada vez que la variable a
cambie se imprime el valor. Esto depende del scope
en el que es ejecutado.
Decorador @pdb.break_on_setattr(attrname)
Breakpoint cuando cambia el atributo de una clase
|
|
Esto es muy bueno!
Función pdb.xpm()
Extended post mortem:
|
|
No he conseguido que funcione, pero me encanta la idea. A ver si consigo actualizar esto mas adelante.
Streaming
Este post es un resumen de lo que fui explorando en streaming: