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;