diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp
index 5a7159996f8ea31f8e3560d9bb956dc5c98e24f4..2ee94881b66e1a48935e429b5b74b5f1f49524a9 100644
--- a/src/plugins/debugger/qml/qmlcppengine.cpp
+++ b/src/plugins/debugger/qml/qmlcppengine.cpp
@@ -660,6 +660,7 @@ void QmlCppEngine::slaveEngineStateChanged
         case InferiorExitOk: {
             // InferiorExitOk will be called through notifyInferiorExited
             // when InferiorShutDownOk is reached
+            qmlEngine()->quitDebugger();
             break;
         }
         case InferiorShutdownRequested: {
@@ -687,17 +688,16 @@ void QmlCppEngine::slaveEngineStateChanged
         case EngineShutdownRequested: {
             // set by queueShutdownEngine()
             QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state());
+            qmlEngine()->quitDebugger();
             break;
         }
         case EngineShutdownFailed: {
             QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state());
-            qmlEngine()->quitDebugger();
             notifyEngineShutdownFailed();
             break;
         }
         case EngineShutdownOk: {
             QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state());
-            qmlEngine()->quitDebugger();
             notifyEngineShutdownOk();
             break;
         }