From b0d2c0d45d5be4afaa6b363341dbc02bb8ff2cc8 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 18 Dec 2020 17:58:05 +0100 Subject: [PATCH] Debugger: Drop base DebuggerEngine::runEngine() The lines between engine setup and running have always been blurry, so it looks more and more unnatural to enforce this in the architecture. Remove the runEngine() call from the end of notifySetupEngineOk, and do it on the user side. Change-Id: I3a5e158e8b3fe9b0a288d064f798e24b2ac47f86 Reviewed-by: David Schulz --- src/plugins/debugger/cdb/cdbengine.cpp | 1 + src/plugins/debugger/cdb/cdbengine.h | 2 +- src/plugins/debugger/debuggerengine.cpp | 1 - src/plugins/debugger/debuggerengine.h | 1 - src/plugins/debugger/gdb/gdbengine.cpp | 2 ++ src/plugins/debugger/gdb/gdbengine.h | 2 +- src/plugins/debugger/lldb/lldbengine.cpp | 5 ++- src/plugins/debugger/lldb/lldbengine.h | 2 +- src/plugins/debugger/pdb/pdbengine.cpp | 6 ++-- src/plugins/debugger/pdb/pdbengine.h | 1 - src/plugins/debugger/qml/qmlengine.cpp | 43 +++++++++++------------- src/plugins/debugger/qml/qmlengine.h | 1 - src/plugins/debugger/uvsc/uvscengine.cpp | 1 + src/plugins/debugger/uvsc/uvscengine.h | 2 +- 14 files changed, 34 insertions(+), 36 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 6c9f6e6607e..28365f19231 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -530,6 +530,7 @@ void CdbEngine::handleInitialSessionIdle() if (response.resultClass == ResultDone || runParameters().startMode == AttachCore) { STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyEngineSetupOk") notifyEngineSetupOk(); + runEngine(); } else { showMessage(QString("Failed to determine inferior pid: %1"). arg(response.data["msg"].data()), LogError); diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 6b9713a4b97..6d3f9aa54b4 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -53,7 +53,7 @@ public: bool canHandleToolTip(const DebuggerToolTipContext &context) const override; void setupEngine() override; - void runEngine() override; + void runEngine(); void shutdownInferior() override; void shutdownEngine() override; void abortDebuggerProcess() override; diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 738102e136d..0cae9c52bb6 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1257,7 +1257,6 @@ void DebuggerEngine::notifyEngineSetupOk() setState(EngineRunRequested); showMessage("CALL: RUN ENGINE"); d->m_progress.setProgressValue(300); - runEngine(); } void DebuggerEngine::notifyEngineRunOkAndInferiorUnrunnable() diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 97effe3ab4d..fbec99a50a3 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -508,7 +508,6 @@ protected: void notifyEngineIll(); virtual void setupEngine() = 0; - virtual void runEngine() = 0; virtual void shutdownInferior() = 0; virtual void shutdownEngine() = 0; virtual void resetInferior() {} diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 02697d977a6..12f5ee748f4 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3916,6 +3916,7 @@ void GdbEngine::finishInferiorSetup() // and even if it fails (e.g. due to stripped binaries), continuing with // the start up is the best we can do. notifyEngineSetupOk(); + runEngine(); } void GdbEngine::handleDebugInfoLocation(const DebuggerResponse &response) @@ -4091,6 +4092,7 @@ void GdbEngine::setupInferior() if (rp.startMode == AttachToRemoteProcess) { notifyEngineSetupOk(); + runEngine(); } else if (isAttachEngine()) { // Task 254674 does not want to remove them diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index bd280af8cf2..70ef082ab11 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -392,7 +392,7 @@ private: ////////// General Interface ////////// bool isTermEngine() const; void setupEngine() final; - void runEngine() final; + void runEngine(); void shutdownEngine() final; void interruptInferior2(); diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 074df297c13..6711c0ed9e9 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -324,7 +324,10 @@ void LldbEngine::setupEngine() // Some extra roundtrip to make sure we end up behind all commands triggered // from claimBreakpointsForEngine(). DebuggerCommand cmd3("executeRoundtrip"); - cmd3.callback = [this](const DebuggerResponse &) { notifyEngineSetupOk(); }; + cmd3.callback = [this](const DebuggerResponse &) { + notifyEngineSetupOk(); + runEngine(); + }; runCommand(cmd3); } else { notifyEngineSetupFailed(); diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h index 1d08069e080..95da756880c 100644 --- a/src/plugins/debugger/lldb/lldbengine.h +++ b/src/plugins/debugger/lldb/lldbengine.h @@ -65,7 +65,7 @@ private: void executeStepOver(bool byInstruction) override; void setupEngine() override; - void runEngine() override; + void runEngine(); void shutdownInferior() override; void shutdownEngine() override; void abortDebuggerProcess() override; diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index 721d255e78b..665f5aa8c9f 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -149,12 +149,10 @@ void PdbEngine::setupEngine() notifyEngineSetupFailed(); return; } - notifyEngineSetupOk(); -} -void PdbEngine::runEngine() -{ + notifyEngineSetupOk(); QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); + showStatusMessage(tr("Running requested..."), 5000); BreakpointManager::claimBreakpointsForEngine(this); notifyEngineRunAndInferiorStopOk(); diff --git a/src/plugins/debugger/pdb/pdbengine.h b/src/plugins/debugger/pdb/pdbengine.h index 57a040d5dc6..3151a6119a9 100644 --- a/src/plugins/debugger/pdb/pdbengine.h +++ b/src/plugins/debugger/pdb/pdbengine.h @@ -52,7 +52,6 @@ private: void executeStepOver(bool) override; void setupEngine() override; - void runEngine() override; void shutdownInferior() override; void shutdownEngine() override; diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 3e74f5c03b5..fc57cad0a05 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -501,29 +501,6 @@ void QmlEngine::closeConnection() } } -void QmlEngine::runEngine() -{ - // we won't get any debug output - if (!terminal()) { - d->retryOnConnectFail = true; - d->automaticConnect = true; - } - - QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); - - if (isPrimaryEngine()) { - // QML only. - if (runParameters().startMode == AttachToRemoteServer) - tryToConnect(); - else if (runParameters().startMode == AttachToRemoteProcess) - beginConnection(); - else - startApplicationLauncher(); - } else { - tryToConnect(); - } -} - void QmlEngine::startApplicationLauncher() { if (!d->applicationLauncher.isRunning()) { @@ -576,6 +553,26 @@ void QmlEngine::setupEngine() { notifyEngineSetupOk(); + // we won't get any debug output + if (!terminal()) { + d->retryOnConnectFail = true; + d->automaticConnect = true; + } + + QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); + + if (isPrimaryEngine()) { + // QML only. + if (runParameters().startMode == AttachToRemoteServer) + tryToConnect(); + else if (runParameters().startMode == AttachToRemoteProcess) + beginConnection(); + else + startApplicationLauncher(); + } else { + tryToConnect(); + } + if (d->automaticConnect) beginConnection(); } diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 5101e91bc40..4fc0230a5d7 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -78,7 +78,6 @@ private: void executeStepOut() override; void setupEngine() override; - void runEngine() override; void shutdownInferior() override; void shutdownEngine() override; diff --git a/src/plugins/debugger/uvsc/uvscengine.cpp b/src/plugins/debugger/uvsc/uvscengine.cpp index 09b19572c1f..a2411337486 100644 --- a/src/plugins/debugger/uvsc/uvscengine.cpp +++ b/src/plugins/debugger/uvsc/uvscengine.cpp @@ -633,6 +633,7 @@ void UvscEngine::handleProjectClosed() showMessage("UVSC: ALL INITIALIZED SUCCESSFULLY."); notifyEngineSetupOk(); + runEngine(); } void UvscEngine::handleUpdateLocation(quint64 address) diff --git a/src/plugins/debugger/uvsc/uvscengine.h b/src/plugins/debugger/uvsc/uvscengine.h index 1050c35bb46..14a6524814c 100644 --- a/src/plugins/debugger/uvsc/uvscengine.h +++ b/src/plugins/debugger/uvsc/uvscengine.h @@ -40,7 +40,7 @@ public: explicit UvscEngine(); void setupEngine() final; - void runEngine() final; + void runEngine(); void shutdownInferior() final; void shutdownEngine() final;