diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index a23fa5c4603..471d0ef258b 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -240,6 +240,7 @@ GdbEngine::GdbEngine(const DebuggerRunParameters &startParameters) m_terminalTrap = startParameters.useTerminal; m_fullStartDone = false; m_systemDumpersLoaded = false; + m_rerunPending = true; m_debugInfoTaskHandler = new DebugInfoTaskHandler(this); //ExtensionSystem::PluginManager::addObject(m_debugInfoTaskHandler); @@ -1972,8 +1973,12 @@ void GdbEngine::handleThreadGroupCreated(const GdbMi &result) void GdbEngine::handleThreadGroupExited(const GdbMi &result) { QByteArray groupId = result["id"].data(); - if (threadsHandler()->notifyGroupExited(groupId)) - notifyInferiorExited(); + if (threadsHandler()->notifyGroupExited(groupId)) { + if (m_rerunPending) + m_rerunPending = false; + else + notifyInferiorExited(); + } } int GdbEngine::currentFrame() const @@ -4322,6 +4327,7 @@ void GdbEngine::resetInferior() } } } + m_rerunPending = true; requestInterruptInferior(); runEngine(); } diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 6d9ef6be7ba..b06cd67bcdc 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -211,6 +211,7 @@ private: CommandsDoneCallback m_commandsDoneCallback; QList m_commandsToRunOnTemporaryBreak; + bool m_rerunPending; private: ////////// Gdb Output, State & Capability Handling ////////// protected: