Python VS代码调试-捕获SIGTERM?

时间:2018-11-15 17:59:59

标签: python visual-studio-code

我想在python调试器停止时强制sys.exit()。当我停止调试器时,会看到Terminated: 15,因此我假设它是SIGTERM。但是,当停止调试器时,不会调用我的kill函数。

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

signal.signal(signal.SIGINT, kill)
signal.signal(signal.SIGTERM, kill)

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

编辑:

只需尝试所有这些。没有爱

for s in signal.Signals:
  try:
    signal.signal(s, self._kill)
  except:
    pass

1 个答案:

答案 0 :(得分:0)

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

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

我发现的唯一解决方法是在VS Code中打开终端(类型:Pythen Debug Terminal)。它应该显示python命令的行为以及调试期间的输出。通过单击使终端成为焦点,然后手动按ctrl-C。这样应该可以正常停止已调试的程序,并且您可以捕获SIGTERM或SIGINT。