diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index 4b7d7321467430e0ebdb9bf3a8883a5c7d6755ce..f267b7f1dd1aaef4d565997cf55be4449548250d 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -274,14 +274,17 @@ void RemoteGdbServerAdapter::runEngine()
 void RemoteGdbServerAdapter::interruptInferior()
 {
     QTC_ASSERT(state() == InferiorStopRequested, qDebug() << state());
-    //m_engine->postCommand("-exec-interrupt", GdbEngine::Immediate,
-    //    CB(handleInterruptInferior));
-    bool ok = m_gdbProc.interrupt();
-    if (!ok) {
-        // FIXME: Extra state needed?
-        m_engine->showMessage(_("NOTE: INFERIOR STOP NOT POSSIBLE"));
-        m_engine->showStatusMessage(tr("Interrupting not possible"));
-        m_engine->notifyInferiorRunOk();
+    if (debuggerCore()->boolSetting(TargetAsync)) {
+        m_engine->postCommand("-exec-interrupt", GdbEngine::Immediate,
+            CB(handleInterruptInferior));
+    } else {
+        bool ok = m_gdbProc.interrupt();
+        if (!ok) {
+            // FIXME: Extra state needed?
+            m_engine->showMessage(_("NOTE: INFERIOR STOP NOT POSSIBLE"));
+            m_engine->showStatusMessage(tr("Interrupting not possible"));
+            m_engine->notifyInferiorRunOk();
+        }
     }
 }