summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/debugger/cdb/cdbengine.cpp13
-rw-r--r--src/plugins/debugger/cdb/cdbengine.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 51585d35b6..a430e3e102 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -954,6 +954,19 @@ void CdbEngine::shutdownEngine()
interruptInferior();
}
+void CdbEngine::abortDebugger()
+{
+ if (targetState() == DebuggerFinished) {
+ // We already tried. Try harder.
+ showMessage(QLatin1String("ABORTING DEBUGGER. SECOND TIME."));
+ m_process.kill();
+ } else {
+ // Be friendly the first time. This will change targetState().
+ showMessage(QLatin1String("ABORTING DEBUGGER. FIRST TIME."));
+ quitDebugger();
+ }
+}
+
void CdbEngine::processFinished()
{
if (debug)
diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h
index 6fbc2b7afa..33b92042c2 100644
--- a/src/plugins/debugger/cdb/cdbengine.h
+++ b/src/plugins/debugger/cdb/cdbengine.h
@@ -84,6 +84,7 @@ public:
virtual void runEngine();
virtual void shutdownInferior();
virtual void shutdownEngine();
+ virtual void abortDebugger();
virtual void detachDebugger();
virtual void updateWatchData(const WatchData &data,
const WatchUpdateFlags & flags = WatchUpdateFlags());