diff --git a/src/plugins/debugger/qml/qmldebuggerclient.h b/src/plugins/debugger/qml/qmldebuggerclient.h
index 984869cf09817523f0b7594db4da771375142338..93c05299e23b51f29770d99f902591239fe1f7c9 100644
--- a/src/plugins/debugger/qml/qmldebuggerclient.h
+++ b/src/plugins/debugger/qml/qmldebuggerclient.h
@@ -59,6 +59,7 @@ public:
 
     virtual void continueInferior() = 0;
     virtual void interruptInferior() = 0;
+    virtual void shutdownInferior() = 0;
 
     virtual void activateFrame(int index) = 0;
 
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index 06f4d53d1c411913c4ee1ba6fe9496670b865350..9ff95179ee480c6cd729b8b6c2f09108741398f1 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -375,10 +375,13 @@ void QmlEngine::handleRemoteSetupFailed(const QString &message)
 
 void QmlEngine::shutdownInferior()
 {
+    d->m_adapter.activeDebuggerClient()->shutdownInferior();
+
     if (isSlaveEngine()) {
         resetLocation();
     }
     stopApplicationLauncher();
+
     notifyInferiorShutdownOk();
 }
 
@@ -417,7 +420,7 @@ void QmlEngine::interruptInferior()
 {
     logMessage(LogSend, "INTERRUPT");
     d->m_adapter.activeDebuggerClient()->interruptInferior();
-
+    notifyInferiorStopOk();
 }
 
 void QmlEngine::executeStep()
@@ -724,8 +727,6 @@ void QmlEngine::inferiorSpontaneousStop()
 {
     if (state() == InferiorRunOk)
         notifyInferiorSpontaneousStop();
-    else
-        notifyInferiorStopOk();
 }
 
 void QmlEngine::disconnected()
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
index 0e1d9a41234ec7390072cd98024298077bfe26eb..9c99a4fef33a8657dbfaec2ba1b580fff15a0760 100644
--- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
+++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
@@ -192,6 +192,18 @@ void QmlV8DebuggerClient::interruptInferior()
 
 }
 
+void QmlV8DebuggerClient::shutdownInferior()
+{
+    QByteArray request;
+
+    JsonInputStream(request) << '{' << INITIALPARAMS ;
+    JsonInputStream(request) << ',' << "command" << ':' << "disconnect";
+
+    JsonInputStream(request) << '}';
+
+    sendMessage(packMessage(request));
+}
+
 void QmlV8DebuggerClient::activateFrame(int index)
 {
     setLocals(index);
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.h b/src/plugins/debugger/qml/qmlv8debuggerclient.h
index f446bb65b0b663997723109c908ea11e6a29d03b..decb635b5fdfc177a39d55fb87712ebc2898ed82 100644
--- a/src/plugins/debugger/qml/qmlv8debuggerclient.h
+++ b/src/plugins/debugger/qml/qmlv8debuggerclient.h
@@ -59,6 +59,7 @@ public:
 
     void continueInferior();
     void interruptInferior();
+    void shutdownInferior();
 
     void activateFrame(int index);
 
diff --git a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
index bbeed2c99c6da8a4203b018c680fe9e49481800a..6246e2ce89114b999549de04c8df01486dda3f14 100644
--- a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
+++ b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
@@ -192,6 +192,11 @@ void QScriptDebuggerClient::interruptInferior()
     sendMessage(reply);
 }
 
+void QScriptDebuggerClient::shutdownInferior()
+{
+
+}
+
 void QScriptDebuggerClient::activateFrame(int index)
 {
     QByteArray reply;
diff --git a/src/plugins/debugger/qml/qscriptdebuggerclient.h b/src/plugins/debugger/qml/qscriptdebuggerclient.h
index 9cc5c40cef19b7a3671792bbb1437396a4533c32..9ebb93d4b7abf84a810e5260bd5a25e757094ed5 100644
--- a/src/plugins/debugger/qml/qscriptdebuggerclient.h
+++ b/src/plugins/debugger/qml/qscriptdebuggerclient.h
@@ -58,6 +58,7 @@ public:
 
     void continueInferior();
     void interruptInferior();
+    void shutdownInferior();
 
     void activateFrame(int index);