diff options
author | hjk <hjk@theqtcompany.com> | 2016-05-27 13:57:21 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2016-05-27 12:34:20 +0000 |
commit | 74b6d2e70851514c02c570216801a832c099c268 (patch) | |
tree | af100cc7d928ab90b7fe81cd13709edb3f7d4405 | |
parent | 8271277d3019bb2648dec7d5df4b2f4c582ef1b3 (diff) | |
download | qt-creator-74b6d2e70851514c02c570216801a832c099c268.tar.gz |
Debugger: Clean up GdbEngine member data on finish
Restarting with cached outdated information is problematic.
Change-Id: I396da2fef96a161c1ab150134b8e65a758a16d58
Task-number: QTCREATORBUG-16355
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/plugins/debugger/debuggerengine.cpp | 1 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerengine.h | 1 | ||||
-rw-r--r-- | src/plugins/debugger/gdb/gdbengine.cpp | 8 | ||||
-rw-r--r-- | src/plugins/debugger/gdb/gdbengine.h | 1 |
4 files changed, 11 insertions, 0 deletions
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index c8a979f0c2..186d594a75 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1280,6 +1280,7 @@ void DebuggerEngine::setState(DebuggerState state, bool forced) bp.notifyBreakpointReleased(); DebuggerToolTipManager::deregisterEngine(this); d->m_memoryAgent.handleDebuggerFinished(); + prepareForRestart(); } showMessage(msg, LogDebug); diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 86f7a56721..34061dcd96 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -201,6 +201,7 @@ public: virtual void selectWatchData(const QByteArray &iname); virtual void startDebugger(DebuggerRunControl *runControl); + virtual void prepareForRestart() {} virtual void watchPoint(const QPoint &); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index d950f41b24..fe375eafdd 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4300,6 +4300,14 @@ void GdbEngine::notifyInferiorSetupFailed() DebuggerEngine::notifyInferiorSetupFailed(); } +void GdbEngine::prepareForRestart() +{ + m_rerunPending = false; + m_commandsDoneCallback = 0; + m_commandForToken.clear(); + m_flagsForToken.clear(); +} + void GdbEngine::handleInferiorPrepared() { const DebuggerRunParameters &rp = runParameters(); diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index ad4ead2711..66fa15f38a 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -72,6 +72,7 @@ private: ////////// General Interface ////////// virtual void handleGdbStartFailed(); void notifyInferiorSetupFailed() override; + void prepareForRestart() override; bool hasCapability(unsigned) const override; void detachDebugger() override; |