From d8cc842d4993696d1b1436355e437ecb92812230 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 9 Apr 2010 13:16:21 +0200 Subject: [PATCH] debugger: let 'Reset Debugger' apply a bit more force --- src/plugins/debugger/debuggermanager.cpp | 9 ++++++++- src/plugins/debugger/debuggermanager.h | 1 + src/plugins/debugger/gdb/gdbengine.cpp | 7 +++++++ src/plugins/debugger/gdb/gdbengine.h | 1 + src/plugins/debugger/idebuggerengine.h | 1 + 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index a764d1bb898..f776251580e 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -543,7 +543,7 @@ void DebuggerManager::init() connect(d->m_actions.stopAction, SIGNAL(triggered()), this, SLOT(interruptDebuggingRequest())); connect(d->m_actions.resetAction, SIGNAL(triggered()), - this, SLOT(exitDebugger())); + this, SLOT(abortDebugger())); connect(d->m_actions.nextAction, SIGNAL(triggered()), this, SLOT(executeStepNext())); connect(d->m_actions.stepAction, SIGNAL(triggered()), @@ -1146,6 +1146,13 @@ void DebuggerManager::exitDebugger() d->m_codeModelSnapshot = CPlusPlus::Snapshot(); } +void DebuggerManager::abortDebugger() +{ + if (d->m_engine && state() != DebuggerNotReady) + d->m_engine->abortDebugger(); + d->m_codeModelSnapshot = CPlusPlus::Snapshot(); +} + DebuggerStartParametersPtr DebuggerManager::startParameters() const { return d->m_startParameters; diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 992903d94cf..b1e5dd2b542 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -201,6 +201,7 @@ public: public slots: void startNewDebugger(const DebuggerStartParametersPtr &sp); void exitDebugger(); + void abortDebugger(); void setSimpleDockWidgetArrangement(const QString &activeLanguage); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 3fe00adf56e..0d81d8eeba7 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1714,6 +1714,13 @@ void GdbEngine::exitDebugger() // called from the manager shutdown(); } +void GdbEngine::abortDebugger() // called from the manager +{ + disconnectDebuggingHelperActions(); + shutdown(); + m_gdbProc.kill(); +} + int GdbEngine::currentFrame() const { return manager()->stackHandler()->currentIndex(); diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index f0d6ffcdc32..f145002caf8 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -109,6 +109,7 @@ private: ////////// General Interface ////////// virtual void startDebugger(const DebuggerStartParametersPtr &sp); virtual unsigned debuggerCapabilities() const; virtual void exitDebugger(); + virtual void abortDebugger(); virtual void detachDebugger(); virtual void shutdown(); diff --git a/src/plugins/debugger/idebuggerengine.h b/src/plugins/debugger/idebuggerengine.h index 4c94fe9c908..3cf48f5a14f 100644 --- a/src/plugins/debugger/idebuggerengine.h +++ b/src/plugins/debugger/idebuggerengine.h @@ -74,6 +74,7 @@ public: virtual void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor, int cursorPos) = 0; virtual void startDebugger(const DebuggerStartParametersPtr &startParameters) = 0; virtual void exitDebugger() = 0; + virtual void abortDebugger() { exitDebugger(); } virtual void detachDebugger() {} virtual void updateWatchData(const WatchData &data) = 0;