Reputation: 8096
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
Upvotes: 8
Views: 2512
Reputation: 61
Slightly different from the OP, but I was just trying to debug my signal handlers with VSCode. I was able to do the following.
kill
heresignal.signal(signal.SIGTERM, kill)
signal.signal()
is hit, call os.getpid()
in the debugger to get the PIDtime.sleep(10)
)kill <pid>
with the PID obtained priorUpvotes: 0
Reputation: 9555
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.
Upvotes: 4