【问题标题】:Interrupt (pause) running Python program in pdb?中断(暂停)在 pdb 中运行 Python 程序?
【发布时间】:2012-04-20 03:15:24
【问题描述】:

在 gdb 中,您可以通过 C-c 中断(暂停)程序并继续。

你能在 pdb 中做到这一点吗?

【问题讨论】:

    标签: python debugging pdb


    【解决方案1】:

    不,python2 的 pdb 不支持此功能,但您可以将此代码添加到程序中作为解决方法:

    def debug_signal_handler(signal, frame):
        import pdb
        pdb.set_trace()
    import signal
    signal.signal(signal.SIGINT, debug_signal_handler)
    

    相关问题:

    【讨论】:

    • 哇,太好了。 Ctrl+c 停止,c 继续,exit 命令退出 pdb。谢谢。
    • 它对我不起作用。我得到一个错误。 ``` ValueError: 对已关闭文件的 I/O 操作```
    • 在 django 项目中将这段代码添加到哪里?
    【解决方案2】:

    基于this bug report,它可能会在 Python 3 中得到修复。

    在 2.x 中,Ctrl-C 会抛出一个 KeyboardInterrupt,这通常不会被程序处理,并将调试器置于“事后”模式。你不能从中断的地方继续。

    我不知道是否有其他方法可以执行您所描述的操作。

    【讨论】:

      【解决方案3】:

      根据 jwd 的回答中的预测,这现在似乎得到了支持。

      在 Python 3.8 中,按 Ctrl+C 会暂停执行,之后您可以使用此处列出的命令单步执行代码并向上/向下导航执行堆栈:

      How to step through Python code to help debug issues?

      【讨论】:

        猜你喜欢
        • 2020-01-22
        • 2012-02-26
        • 2021-05-29
        • 1970-01-01
        • 2013-02-19
        • 2012-01-11
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        相关资源
        最近更新 更多