在 IPython 中,启用 %pdb
后,我可以按 Ctrl-C 键,并在我停止程序的确切位置被拖放到 Python 调试器控制台。
但是,此时程序已完全停止,即使在调试器中运行 continue
也无法恢复执行。
IPython 是否可以做到这一点,然后让我在完成后恢复程序的执行?
注意:我知道 pdb.set_trace()
,但这不是我要找的。我正在寻找一种方法来快速、暂时停止 IPython 以进行快速无害检查,而不必在可能的情况下在我的代码中手动添加 set_trace
。
最佳答案
这类事情有很多极端情况。然而,将信号处理程序添加到您的 usercustomize.py 会让您走得更远:
cat >> $(python -m site --user-site)/usercustomize.py <<EOF
import signal, pdb
signal.signal(signal.SIGINT, lambda *args: pdb.set_trace())
EOF
现在当您启动 python 时,您将安装该信号处理程序。
例如,您现在可以中断 SimpleHTTPServer:
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
^C--Return--
> [...].local/lib/python2.7/site-packages/usercustomize.py(3)<lambda>()>None
-> signal.signal(signal.SIGINT, lambda *args: pdb.set_trace())
(Pdb) locals()
{'__return__': None, 'args': (2, <frame object at 0x10245b238>), 'os': <module 'os' from '[...]/lib/python2.7/os.pyc'>}
关于python - 暂时进入IPython中的调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712460/