在Python中调试脚本(2.7,在Linux上运行)时,我偶尔会注入pdb.set_trace()(注意我实际上正在使用ipdb),例如:
import ipdb as pdb
try:
do_something()
# I'd like to look at some local variables before running do_something_dangerous()
pdb.set_trace()
except:
pass
do_something_dangerous()
我通常从shell运行我的脚本,例如
python my_script.py
有时在我的调试会话中,我意识到我不想运行do_something_dangerous()。停止程序执行的最简单方法是什么,以便do_something_dangerous()不会运行,我可以退回到shell?
据我所知,按ctrl-d(或发出调试器的退出命令)只会退出ipdb,程序将继续运行(在上面的例子中)。按ctrl-c似乎引发了KeyboardInterrupt,但我从未理解它被引发的上下文。
我希望像ctrl-q这样的东西可以简单地删除整个过程,但我还没有找到任何东西。
我知道我的例子非常有用,但我的问题是如何在调试代码设置为捕获异常时从pdb中止执行。它不是关于如何重构上面的代码,所以它的工作原理!
答案 0 :(得分:1)
答案 1 :(得分:1)
我发现ctrl-z暂停python / ipdb进程,然后'kill%1'终止进程效果很好,我输入相当快(使用bash别名k ='kill%1' )。我不确定是否有更清洁/更简单的东西。