diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 11e0860b11cede5e009999727fbeb1883d6cf6ac..b7e231434b5d75bb716318d7121b998df825fd26 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -285,6 +285,8 @@ void GdbEngine::initializeVariables()
 
     m_inbuffer.clear();
 
+    m_commandTimer->stop();
+
     // ConverterState has no reset() function.
     m_outputCodecState.~ConverterState();
     new (&m_outputCodecState) QTextCodec::ConverterState();
@@ -1456,6 +1458,7 @@ void GdbEngine::shutdown()
     case InferiorRunning:
     case InferiorStopping:
     case InferiorStopped:
+        m_commandsToRunOnTemporaryBreak.clear();
         postCommand(_(m_gdbAdapter->inferiorShutdownCommand()),
                     NeedsStop | LosesChild, CB(handleInferiorShutdown));
         break;
@@ -1496,6 +1499,7 @@ void GdbEngine::handleGdbExit(const GdbResponse &response)
 {
     if (response.resultClass == GdbResultExit) {
         debugMessage(_("GDB CLAIMS EXIT; WAITING"));
+        m_commandsDoneCallback = 0;
         // don't set state here, this will be handled in handleGdbFinished()
     } else {
         QString msg = m_gdbAdapter->msgGdbStopFailed(_(response.data.findChild("msg").data()));