From b4a2bd6b05fd681ee01d3b5ac7c55dd0613c0781 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 15 Oct 2014 08:15:56 +0200 Subject: [PATCH] CDB: Make it possible to kill the cdb... ...when the cdb got hung up. Handle abort like in almost any debugger engine, first kindly ask to quit. If this doesn't work kill the debugger process. Task-number: QTCREATORBUG-13173 Change-Id: I1ddc98b1ffe00342c96d104c16099b500e52bc07 Reviewed-by: hjk --- src/plugins/debugger/cdb/cdbengine.cpp | 13 +++++++++++++ src/plugins/debugger/cdb/cdbengine.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 51585d35b66..a430e3e1028 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 6fbc2b7afa1..33b92042c27 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());