From fb82c78086ac31a75dbd1e82113bc138916210fe Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Mon, 11 Oct 2010 16:37:19 +0200 Subject: [PATCH] Debugger: Fix CDB shutdown warnings. Protect endInferior() from repeated invocation. Reviewed-by: hjk Task-number: QTCREATORBUG-2681 --- src/plugins/debugger/cdb/cdbengine.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 520bc5110fb..b96c958d132 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -563,8 +563,12 @@ void CdbEngine::processTerminated(unsigned long exitCode) bool CdbEnginePrivate::endInferior(bool detachOnly, QString *errorMessage) { + // Prevent repeated invocation. + const bool hasHandles = m_hDebuggeeProcess != NULL; if (debugCDBExecution) - qDebug("endInferior detach=%d, %s", detachOnly, DebuggerEngine::stateName(m_engine->state())); + qDebug("endInferior detach=%d, %s handles=%d", detachOnly, DebuggerEngine::stateName(m_engine->state()), hasHandles); + if (!hasHandles) + return true; // Are we running switch (m_engine->state()) { case InferiorRunRequested: @@ -1089,8 +1093,13 @@ void CdbEngine::activateFrame(int frameIndex) if (debugCDB) qDebug() << Q_FUNC_INFO << frameIndex; - if (state() != InferiorStopOk) { - qWarning("WARNING %s: invoked while debuggee is running\n", Q_FUNC_INFO); + switch (state()) { + case InferiorStopOk: + case InferiorShutdownRequested: + break; + default: + qWarning("WARNING %s: invoked in invalid state %s\n", + Q_FUNC_INFO, DebuggerEngine::stateName(state())); return; } -- GitLab