Guardar puntos de interrupción en el archivo

Al depurar mi código de Python, ejecuto un script a través de ipdb desde la línea de comandos y establezco una serie de puntos de interrupción. Luego hago algunos cambios en uno o más módulos y vuelvo a ejecutar. Sin embargo, si simplemente uso los módulos de ejecución , no se recargan . Para asegurarme de que así sea, puedo existir y reiniciar Python por completo, pero luego necesito restablecer todos los puntos de interrupción, lo cual es tedioso si tengo muchos y si se hace una y otra vez.

¿Hay una manera de guardar el punto de interrupción en un archivo en (i) pdb, de modo que después de pequeños cambios que no cambien los números de línea, pueda volcar mis puntos de interrupción, reiniciar Python + pdb y volver a cargar mis puntos de interrupción? El equivalente a Matlabs X = dbstatus , guardar / cargar X y configurar dbstop(X) .

Puede guardar los puntos de interrupción en el archivo .pdbrc en una ruta de trabajo o globalmente en su directorio de inicio. El archivo debe tener algo como esto:

 # breakpoint 1 break /path/to/file:lineno # breakpoint 2 break /path/to/file:lineno 

Puede definir puntos de interrupción de varias maneras, al igual que en el modo interactivo. Así que solo break 4 o break method funcionará también.

Este archivo funciona tanto para pdb como para ipdb, ya que más tarde tiene todo lo que pdb tiene y más.

Bonus :

Podría usar un alias para guardar puntos de interrupción más fácilmente. Por ejemplo:

 # append breakpoint to .pdbrc in current working directory # usage: bs lineno alias bs with open(".pdbrc", "a") as pdbrc: pdbrc.write("break " + __file__ + ":%1\n") 

Ponga encima de su .pdbrc global y utilícelo así:

 > bs 15 

Esto agregará una statement de punto de interrupción a un archivo .pdbrc local para una línea 15 del archivo actual.

No es la solución perfecta, pero lo suficientemente cerca para mí. Sintonice el comando a sus necesidades.

Lea más sobre los alias aquí.