para - python debugger portable
Saliendo del depurador de Python ipdb (4)
Como se mencionó en otra respuesta, esto fue un error en IPython 5.1. Se solucionó en esta solicitud de extracción y ya no es un problema de IPython 5.2 en adelante. Ahora puede usar q
, quit()
o Ctrl + d para salir del depurador.
Utilizo ipdb bastante a menudo para saltar a un trozo de código que está aislado, es decir, es difícil escribir un script real que lo use. En su lugar, escribo un caso de prueba mínimo con burla y salto en él.
Ejemplar para el flujo de trabajo:
def func():
...
import ipdb
ipdb.set_trace()
...
def test_case():
...
func()
...
Entonces, invocar
py.test test_file.py -s -k test_case
Ahora, normalmente solo marco una o dos variables, y luego quiero dejar de fumar. Cambia el código y vuelve a hacerlo.
¿Cómo puedo dejar de fumar? El manual dice q
sale del depurador. No lo hace (en realidad). Debe salir varias veces antes de que el depurador finalice. El mismo comportamiento para Ctrl-C y Ctrl-D (con la frustración adicional de que presionar Ctrl-D varias veces también salga de la terminal).
¿Hay alguna manera inteligente de forzar el abandono? ¿Es este flujo de trabajo incluso sensible? ¿Cuál es la forma estándar de hacerlo?
Es el problema con la versión reciente de IPython 5.1.0. Puedes consultar con tu entorno utilizando el siguiente código:
pip freeze | egrep -i ''^i''
Se resolverá reduciendo a IPython == 5.0.0.
pip install ipython==5.0.0
Funciona para mi.
Lo siguiente me funcionó:
import sys
sys.exit()
En las versiones más nuevas de ipython, como se mencionó arriba y abajo, esto no funciona. En ese caso,
import os
os._exit(0)
Todavía debería hacer el truco.
.pdbrc
siguiente en mi .pdbrc
import os
alias kk os.system(''kill -9 %d'' % os.getpid())
kk
mata al depurador y (el proceso que desencadena al depurador).