summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2016-05-27 13:57:21 +0200
committerhjk <hjk@theqtcompany.com>2016-05-27 12:34:20 +0000
commit74b6d2e70851514c02c570216801a832c099c268 (patch)
treeaf100cc7d928ab90b7fe81cd13709edb3f7d4405
parent8271277d3019bb2648dec7d5df4b2f4c582ef1b3 (diff)
downloadqt-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.cpp1
-rw-r--r--src/plugins/debugger/debuggerengine.h1
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp8
-rw-r--r--src/plugins/debugger/gdb/gdbengine.h1
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;