diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 65f866b583199c21da555b15cbe07e1cb748bfc6..130d4608b2bf2a8e8513e7e94f211022555a6b83 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -205,14 +205,17 @@ void GdbEngine::initializeVariables()
 void GdbEngine::gdbProcError(QProcess::ProcessError error)
 {
     QString msg;
+    bool kill = true;
     switch (error) {
         case QProcess::FailedToStart:
+            kill = false;
             msg = tr("The Gdb process failed to start. Either the "
                 "invoked program '%1' is missing, or you may have insufficient "
                 "permissions to invoke the program.")
                 .arg(theDebuggerStringSetting(GdbLocation));
             break;
         case QProcess::Crashed:
+            kill = false;
             msg = tr("The Gdb process crashed some time after starting "
                 "successfully.");
             break;
@@ -238,7 +241,8 @@ void GdbEngine::gdbProcError(QProcess::ProcessError error)
     q->showStatusMessage(msg);
     QMessageBox::critical(q->mainWindow(), tr("Error"), msg);
     // act as if it was closed by the core
-    q->exitDebugger();
+    if (kill)
+        q->exitDebugger();
 }
 
 void GdbEngine::uploadProcError(QProcess::ProcessError error)