During development I often end up with multiple live sessions. PyCharm gives me an option to close all debugger tabs (or all other tabs), but for each live session it brings up
Maybe the best answer to the question is to not start all these sessions in the first place. If what you really want to do is kill the existing session when you start the debugger, set the "Single instance only" option in the Run/Debug Configurations dialog.
Then each time you click the debug icon (or Shift+F9) it will stop the current session and start a new one. Before I figured out what this did, I would end up with a number of sessions still running even though I was no longer interested in them.
The PyCharm help says the following, but in my experience, with this checked, restarting the debugger just kills off the current instance and starts a new one. This is useful when you don't want a bunch of old instances running, but it is critical when building a Django app and you don't want multiple instances trying to run at the same time.
If this check box is selected, this run/debug configuration cannot be launched more
than once.
Every time a new run/debug configuration is launched, PyCharm checks the presence of
the other instances of the same run/debug configuration, and displays a confirmation
dialog box. If you click OK in the confirmation dialog box, the first instance of
the runner will be stopped, and the next one will take its place.
This make sense, when usage of certain resources can cause conflicts, or when
launching two run/debug configurations of the same type consumes too much of the CPU
and memory resources. If this check box is not selected, it is possible to launch as
many instances of the runner as required. So doing, each runner will start in its own
tab of the Run tool window.
I ran into this issue when using PyCharm for the first time. I assumed incorrectly that each time I ran the debugger, I was killing any existing run and starting a new one. I found no apparent way in the GUI to kill all of the python processes with open debugger connections, so I just did it in the terminal as follows:
Find the processes you're debugging. In my case, I had over 100 processes before I realized what was going on. Just eyeball it to ensure correctness.
ps ux | grep my_script_name | grep -v grep
Send your list of PIDs to kill
(assuming PID is column 2 in your ps output):
kill -9 `ps ux | grep my_script_name | grep -v grep | awk '{print $2}'`
Try closing the tabs in PyCharm. Debugger connections are closed, so it won't complain.