¿Cómo salir de pdb y permitir que el progtwig continúe?

Estoy usando el módulo pdb para depurar un progtwig. Me gustaría entender cómo puedo salir de pdb y permitir que el progtwig continúe hasta su finalización. El progtwig es computacionalmente costoso de ejecutar, por lo que no quiero salir sin que el script intente completarlo. continue no parece funcionar. ¿Cómo puedo salir de pdb y continuar con mi progtwig?

continue debe “Continuar ejecución, solo detener cuando se encuentra un punto de interrupción”, por lo que tiene un punto de interrupción establecido en algún lugar. Para eliminar el punto de interrupción (si lo insertó manualmente):

 (Pdb) break Num Type Disp Enb Where 1 breakpoint keep yes at /path/to/test.py:5 (Pdb) clear 1 Deleted breakpoint 1 (Pdb) continue 

O, si está usando pdb.set_trace() , puede intentar esto (aunque si está usando pdb de formas más sofisticadas, esto puede romper las cosas …)

 (Pdb) pdb.set_trace = lambda: None # This replaces the set_trace() function! (Pdb) continue # No more breaks! 

Un simple CtrlD saldrá de pdb. Si desea continuar en lugar de romper, solo presione c en lugar de todo continue comando continue

Si realmente desea salir del depurador, entonces necesita ejecutar algo como WinPdb que le permite separarse del proceso y luego salir del depurador, (NB es multiplataforma).

Si desea continuar la depuración pero ya no se detiene en un punto de interrupción determinado, deberá:

  1. Anote el número del punto de interrupción (o el número de archivo y línea),
  2. O bien cl bp_number o clear file:line para eliminar de forma permanente el punto de interrupción o disable pb_number para desactivarlo pero poder disable pb_number a disable pb_number .
  3. Luego continue y su progtwig se ejecutará hasta que se scope el siguiente punto de interrupción.

Para más detalles sobre lo anterior vea el manual .

La respuesta de @voithos es correcta, así que solo agregaré una alternativa en el caso de que estés usando set_trace . Sí, el pdb.set_trace = lambda: None funciona bien, pero no si tiene otros puntos de interrupción establecidos y desea volver a habilitarlo más adelante. Para mí, esto apunta al hecho de que, desafortunadamente, a pdb le falta un montón de funcionalidades (incluso cosas básicas como mostrar listas), y este es otro caso.

La buena noticia es que pdb++ es un excelente reemplazo pdb para pdb , y una de las cosas que resuelve es exactamente el problema de deshabilitar set_trace . Así que simplemente puedes hacer:

 pip install pdbpp 

y luego en el (Pdb++) , escriba:

 pdb.disable() 

Si desea volver a habilitar más tarde, como es de esperar, esto funciona:

 pdb.enable() 

¡Fácil! Y obtendrás muchas otras cosas útiles además de eso.