diff --git a/src/plugins/debugger/gdb/attachgdbadapter.cpp b/src/plugins/debugger/gdb/attachgdbadapter.cpp
index fe727ad4c015540d9e2a58535a0fe07b3f0bb492..6cf129963454b14db491866b0a5ea1d09869644d 100644
--- a/src/plugins/debugger/gdb/attachgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/attachgdbadapter.cpp
@@ -135,7 +135,7 @@ void AttachGdbAdapter::handleAttach(const GdbResponse &response)
         m_engine->updateAll();
     } else if (response.resultClass == GdbResultError) {
         QString msg = __(response.data.findChild("msg").data());
-        setState(InferiorPreparationFailed);
+        setState(InferiorStartFailed);
         emit inferiorStartFailed(msg);
     }
 }
@@ -167,6 +167,11 @@ void AttachGdbAdapter::shutdown()
 {
     switch (state()) {
     
+    case InferiorStartFailed:
+        m_engine->postCommand(_("-gdb-exit"));
+        setState(DebuggerNotReady);
+        return;
+
     case InferiorStopped:
         setState(InferiorShuttingDown);
         m_engine->postCommand(_("detach"), CB(handleDetach));