首页 > 解决方案 > 为什么 Python 3 上的 pdb 会忽略我的 CTRL+C 而只显示“--KeyboardInterrupt--”

问题描述

pdbPython 2 中,我可以 CTRL-C 并退出我的 Python 程序。

在 Python 3.6 下我不这样做,只是显示--KeyboardInterrupt--并忽略我。为了退出,我需要 CTRL-D,但如果我“做太多”,这也会终止我的 bash 会话。

我可以恢复 CTRL+C 行为吗?

在此处输入图像描述

Python 3.6,macOS Sierra。

标签: python-3.x

解决方案


我仍然有同样的行为。也许这是我的环境中的一个小故障,但否则我看不到明确忽略用户使用 CTRL+C 终止程序的请求的好处。

但是,我发现点击 '<strong>q' 会触发pdb quit,这主要会导致所需的结果,即程序终止。而且,与 CTRL+D 不同,它也没有关闭启动 bash 会话的风险。

编辑 - 这成功了

(我有用于捕获异常的代码,这就是为什么一个简单的 q/quit 被命中或错过的原因)

根据有没有办法防止从 sys.exit() 引发的 SystemExit 异常被捕获?

:注意它关于没有运行清理代码的警告

# ~/.pdbrc
alias qq import os; os._exit(1)

推荐阅读