Python VS Code Debug - Capture SIGTERM?

Viewed 1237

I'd like to force sys.exit() when the python debugger is stopped. When I stop the debugger I see Terminated: 15 so I assume this is SIGTERM. However, when stopping the debugger, my kill function isn't called.

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

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

When stopping the vscode debugger, what signal is sent?

Edit:

Just tried all of them. No love

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

For now we seem to be OOL (out of luck) - I ran into the same issue and found that VS Code python extension does issue a SIGKILL on debug stop, which cannot be cought.

Unlike the node.js extenstion, the Python extension also does not support setting the type to SIGTERM or SIGINT.

The only workaround I found is to have an open terminal (type: Pythen Debug Terminal) in VS Code. It should show the python command behavior and output during debug. Bring the terminal into focus by clicking on it and press ctrl-C manually. This should stop the debugged program gracefully and your catching the SIGTERM or SIGINT will work.

Related