Python VS Code 调试 - 捕获 SIGTERM?

mic*_*cah 6 python visual-studio-code

我想sys.exit()在 python 调试器停止时强制。当我停止调试器时,我看到了Terminated: 15所以我认为这是SIGTERM. 但是,当停止调试器时,我的 kill 函数没有被调用。

def kill(sig, frame):
  sys.exit(0)

signal.signal(signal.SIGINT, kill)
signal.signal(signal.SIGTERM, kill)
Run Code Online (Sandbox Code Playgroud)

停止vscode调试器时,发送什么信号?

编辑:

刚刚尝试了所有这些。没爱

for s in signal.Signals:
  try:
    signal.signal(s, self._kill)
  except:
    pass
Run Code Online (Sandbox Code Playgroud)

Osw*_*ann 4

现在我们似乎是 OOL(运气不好) - 我遇到了同样的问题,发现 VS Code python 扩展确实在调试停止时发出 SIGKILL,这是无法克服的。

与 node.js 扩展不同,Python 扩展也不支持将类型设置为 SIGTERM 或 SIGINT。

我发现的唯一解决方法是在 VS Code 中打开一个终端(类型:Pythen 调试终端)。它应该显示调试期间的 python 命令行为和输出。单击终端并手动按 ctrl-C 将其置于焦点中。这应该会正常停止被调试的程序,并且捕获 SIGTERM 或 SIGINT 将会起作用。