diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index a235a937e80cce3db887b0cd225524a06e20e88a..8ab999f68dfdfbce6386063e635350f05e2e5a62 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -1239,8 +1239,12 @@ void DebuggerManager::sessionLoaded()
 
 void DebuggerManager::aboutToUnloadSession()
 {
-    if (d->m_engine)
-        d->m_engine->shutdown();
+    // Stop debugging the active project when switching sessions.
+    // Note that at startup, session switches may occur, which interfer
+    // with command-line debugging startup.
+    if (d->m_engine && state() != DebuggerNotReady
+        && d->m_startParameters->startMode == StartInternal)
+            d->m_engine->shutdown();
 }
 
 void DebuggerManager::aboutToSaveSession()