python - 暂时进入IPython中的调试器

标签 python debugging ipython pdb

在 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/

相关文章:

python - 将多个 if 语句放入 python pandas 的一个 if 语句中

python - 使用空字典作为默认参数的最 Pythonic 方式是什么?

c# - 简单的 silverlight 打开文件对话框错误

python - 使用 Django 1.5 和 IPython 获取 NameError

python - 在 pytables 中组合 read_sorted 和 Expr 的最有效内存方式是什么?

python - NumPy:连接时出错 - 无法连接零维数组

android - 跳转到 Android Studio 调试器中的当前可执行行

c - 分段拆解 helloworld

python - 为什么给双下划线 __ 赋值会破坏 ipython 中单下划线 _ 的行为?

ipython - Spyder 中是否有从编辑器切换到控制台的键盘快捷键?