diff --git a/src/plugins/debugger/gdb/attachgdbadapter.cpp b/src/plugins/debugger/gdb/attachgdbadapter.cpp
index 484828d2a1af9669f7330a623bbaaf39b789afae..e6325deb61df3edba6f62ecbde97cd33b779d2ee 100644
--- a/src/plugins/debugger/gdb/attachgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/attachgdbadapter.cpp
@@ -130,7 +130,7 @@ void AttachGdbAdapter::shutdown()
 
     case InferiorShutDown:
         setState(AdapterShuttingDown);
-        m_engine->postCommand(_("-gdb-exit"), CB(handleExit));
+        m_engine->postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleExit));
         return;
 
     default:
diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp
index 979d049cc0dce591c80dd0a55c2a59aa31e72d0c..b0ddd2d7b52b9930fb726e20a170c51b2221570d 100644
--- a/src/plugins/debugger/gdb/coregdbadapter.cpp
+++ b/src/plugins/debugger/gdb/coregdbadapter.cpp
@@ -192,7 +192,7 @@ void CoreGdbAdapter::shutdown()
     case InferiorUnrunnable:
     case InferiorShutDown:
         setState(AdapterShuttingDown);
-        m_engine->postCommand(_("-gdb-exit"), CB(handleExit));
+        m_engine->postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleExit));
         return;
 
     default:
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 1372c47005817fd62dbac432be318a9d3ff44507..f4d2576e85d7eebe6bb471afc22f019617ded011 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -803,10 +803,12 @@ void GdbEngine::handleResultRecord(const GdbResponse &response)
     responseWithCookie.cookie = cmd.cookie;
 
     if (response.resultClass != GdbResultError &&
-        response.resultClass != ((cmd.flags & RunRequest) ? GdbResultRunning : GdbResultDone)) {
-        debugMessage(_("UNEXPECTED RESPONSE %1 TO COMMAND %2")
-                     .arg(_(GdbResponse::stringFromResultClass(response.resultClass)))
-                     .arg(cmd.command));
+        response.resultClass != ((cmd.flags & RunRequest) ? GdbResultRunning :
+                                 (cmd.flags & ExitRequest) ? GdbResultExit :
+                                 GdbResultDone)) {
+        QString rsp = _(GdbResponse::stringFromResultClass(response.resultClass));
+        qWarning() << "UNEXPECTED RESPONSE " << rsp << " TO COMMAND" << cmd.command << " AT " __FILE__ ":" STRINGIFY(__LINE__);
+        debugMessage(_("UNEXPECTED RESPONSE %1 TO COMMAND %2").arg(rsp).arg(cmd.command));
     } else {
         if (cmd.callback)
             (this->*cmd.callback)(responseWithCookie);
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index dada8205da7e537ad6f6651c61853230ccc99f21..a3e063e31668168007dbb7ab7ca5314817b70399 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -177,7 +177,8 @@ public: // otherwise the Qt flag macros are unhappy
         RebuildModel = 4, // Trigger model rebuild when no such commands are pending any more
         WatchUpdate = Discardable | RebuildModel,
         EmbedToken = 8,   // Expand %1 in the command to the command token
-        RunRequest = 16   // Callback expect GdbResultRunning instead of GdbResultDone
+        RunRequest = 16,  // Callback expect GdbResultRunning instead of GdbResultDone
+        ExitRequest = 32  // Callback expect GdbResultExit instead of GdbResultDone
     };
     Q_DECLARE_FLAGS(GdbCommandFlags, GdbCommandFlag)
 
diff --git a/src/plugins/debugger/gdb/plaingdbadapter.cpp b/src/plugins/debugger/gdb/plaingdbadapter.cpp
index 5d21af78816607d6661baab2d6a9dc6cfef46599..b1395f6439c2d41b3875be0d7c3784774e4b0e5e 100644
--- a/src/plugins/debugger/gdb/plaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/plaingdbadapter.cpp
@@ -177,7 +177,7 @@ void PlainGdbAdapter::shutdown()
 
     case InferiorShutDown:
         setState(AdapterShuttingDown);
-        m_engine->postCommand(_("-gdb-exit"), CB(handleExit));
+        m_engine->postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleExit));
         return;
 
 /*
@@ -192,7 +192,7 @@ void PlainGdbAdapter::shutdown()
                 .arg(state()));
             m_gdbProc.kill();
         }
-        m_engine->postCommand(_("-gdb-exit"), CB(handleExit));
+        m_engine->postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleExit));
         return;
 */
     default:
diff --git a/src/plugins/debugger/gdb/remotegdbadapter.cpp b/src/plugins/debugger/gdb/remotegdbadapter.cpp
index 27b0031cbf7829a1d27ad30be004e2e3bb09efa2..d6fdb3381a62f79a88f51db00a7648fbbf2fdfb3 100644
--- a/src/plugins/debugger/gdb/remotegdbadapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbadapter.cpp
@@ -248,7 +248,7 @@ void RemoteGdbAdapter::shutdown()
     case InferiorStartFailed:
     case InferiorShutDown:
         setState(AdapterShuttingDown);
-        m_engine->postCommand(_("-gdb-exit"), CB(handleExit));
+        m_engine->postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleExit));
         return;
 
     }
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index 3a7c37d65487dda454c4a6cc4ac8263af7b98c6d..bd32a388104eaa5f54a8f9cdbfef5c424a89a6e0 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -2015,7 +2015,7 @@ void TrkGdbAdapter::shutdown()
     case InferiorShutDown:
         setState(AdapterShuttingDown);
         cleanup();
-        m_engine->postCommand(_("-gdb-exit"), CB(handleExit));
+        m_engine->postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleExit));
         return;
 
 /*