如何捕获 PyCharm 调试器的 "Stop Button"?

How to catch PyCharm debugger's "Stop Button"?

小问题:调试 python 脚本时 PyCharm 的停止按钮发送什么 signal/Exception?

背景:一些帖子记录了在使用 PyCharm 的调试器时按下 Ctrl-C 不会向 python 脚本发送键盘 Interrupt/SIGINT 信号。美好的。我的问题是,当单击调试器的 "Stop Button" 时, 做什么 被发送到 Python 脚本。我想重写我的代码来捕捉 signal/Exception 是什么。 [我正在使用 OSX w/PyCharm 4.0.4]

调试后停止进程时,它会向解释器发送 SIGKILL 信号。

Process finished with exit code 137

128 以上的退出代码表示它是 128 + 信号编号(在本例中为 9,即 SIGKILL)。

您可以使用 signal.signal() 捕获 SIGTERM,但无法捕获 SIGKILL。你无能为力。
那么,您可以设置一个单独的脚本来监视第一个(例如,检查其 PID 在 运行 进程中是否存在)并在给定进程终止时执行某些操作。