diff options
author | hjk <hjk@qt.io> | 2017-10-16 13:30:53 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-10-17 13:57:34 +0000 |
commit | 87cd4495a9f23512e956b6313f1b5fa918e16b36 (patch) | |
tree | d5004200af1ddbcda41072092cea1c027b84315a | |
parent | dfe23b210d7abc8ce5cade237976f51a69b7c8f0 (diff) | |
download | qt-creator-87cd4495a9f23512e956b6313f1b5fa918e16b36.tar.gz |
Debugger: Pass interrupt request more directly to engines
De-virtualize requestInterruptInferior() and let always
the master engine react to the request. interruptInferior()
diverts to the active slave in case of the combined engine.
Change-Id: I5d62cf9379c8a452132827897a9ac51e4027f595
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/plugins/debugger/debuggerengine.cpp | 22 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerengine.h | 2 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/debugger/qml/qmlcppengine.cpp | 8 | ||||
-rw-r--r-- | src/plugins/debugger/qml/qmlcppengine.h | 1 |
5 files changed, 12 insertions, 23 deletions
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 81ad455a00..fc19bdd51b 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -233,7 +233,6 @@ public: void doRunEngine(); void doShutdownEngine(); void doShutdownInferior(); - void doInterruptInferior(); void reloadDisassembly() { @@ -856,16 +855,6 @@ void DebuggerEngine::notifyInferiorStopFailed() d->doShutdownEngine(); } -void DebuggerEnginePrivate::doInterruptInferior() -{ - //QTC_ASSERT(isMasterEngine(), return); - QTC_ASSERT(state() == InferiorRunOk, qDebug() << m_engine << state()); - m_engine->setState(InferiorStopRequested); - m_engine->showMessage("CALL: INTERRUPT INFERIOR"); - m_engine->showStatusMessage(tr("Attempting to interrupt.")); - m_engine->interruptInferior(); -} - void DebuggerEnginePrivate::doShutdownInferior() { m_engine->setState(InferiorShutdownRequested); @@ -1237,7 +1226,9 @@ void DebuggerEngine::quitDebugger() d->doShutdownInferior(); break; case InferiorRunOk: - d->doInterruptInferior(); + setState(InferiorStopRequested); + showStatusMessage(tr("Attempting to interrupt.")); + interruptInferior(); break; case EngineSetupRequested: notifyEngineSetupFailed(); @@ -1283,7 +1274,12 @@ void DebuggerEngine::abortDebugger() void DebuggerEngine::requestInterruptInferior() { - d->doInterruptInferior(); + QTC_CHECK(isMasterEngine()); + QTC_ASSERT(state() == InferiorRunOk, qDebug() << this << state()); + setState(InferiorStopRequested); + showMessage("CALL: INTERRUPT INFERIOR"); + showStatusMessage(tr("Attempting to interrupt.")); + interruptInferior(); } void DebuggerEngine::progressPing() diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 9def5109f7..41bcd8a2fa 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -442,7 +442,7 @@ protected: virtual void continueInferior(); virtual void interruptInferior(); - virtual void requestInterruptInferior(); + void requestInterruptInferior(); virtual void executeRunToLine(const Internal::ContextData &data); virtual void executeRunToFunction(const QString &functionName); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 9d9c14833f..f3e1915b10 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -3036,7 +3036,7 @@ DebuggerEngine *currentEngine() { DebuggerEngine *engine = nullptr; if (dd->m_currentRunTool) - engine = dd->m_currentRunTool->activeEngine(); + engine = dd->m_currentRunTool->engine(); return engine ? engine : dd->dummyEngine(); } diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 21e280ebfe..7554a68d8b 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -337,13 +337,7 @@ void QmlCppEngine::continueInferior() void QmlCppEngine::interruptInferior() { EDEBUG("\nMASTER INTERRUPT INFERIOR"); - m_cppEngine->requestInterruptInferior(); -} - -void QmlCppEngine::requestInterruptInferior() -{ - EDEBUG("\nMASTER REQUEST INTERRUPT INFERIOR"); - DebuggerEngine::requestInterruptInferior(); + m_activeEngine->interruptInferior(); } void QmlCppEngine::executeRunToLine(const ContextData &data) diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h index 1a6bffb7c5..751fa3c410 100644 --- a/src/plugins/debugger/qml/qmlcppengine.h +++ b/src/plugins/debugger/qml/qmlcppengine.h @@ -98,7 +98,6 @@ protected: void executeReturn() override; void continueInferior() override; void interruptInferior() override; - void requestInterruptInferior() override; void executeRunToLine(const ContextData &data) override; void executeRunToFunction(const QString &functionName) override; |