如何在pdb.set_trace()之后停止python程序



在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(或发出调试器的quit命令)只会退出ipdb,程序将继续运行(在上面的示例中)。按ctrl-c似乎引发了一个KeyboardInterrupt,但我从来没有理解过它被引发的上下文。

我希望像ctrl-q这样的东西可以简单地关闭整个过程,但是我没有找到任何东西。

我明白我的例子是高度人为的,但我的问题是如何中止执行从pdb被调试的代码被设置为捕获异常。这不是关于如何重构上面的代码,使其工作!

我发现ctrl-z用来挂起python/ipdb进程,然后加上'kill %1'来终止进程效果很好,而且对我来说输入起来相当快(使用bash别名k='kill %1')。我不确定是否有更简洁的方法

从模块docs:

(外的)退出调试器。正在执行的程序被中止。

具体来说,这将导致下一个被调用的调试器函数引发BdbQuit异常。

相关内容

  • 没有找到相关文章

最新更新