diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index bb30d87460d..fcf291e24e2 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -743,6 +743,11 @@ void DebuggerRunTool::setUsePortsGatherer(bool useCpp, bool useQml) runControl()->requestQmlChannel(); } +void DebuggerRunTool::setupPortsGatherer() +{ + setUsePortsGatherer(isCppDebugging(), isQmlDebugging()); +} + void DebuggerRunTool::setSolibSearchPath(const Utils::FilePaths &list) { m_runParameters.solibSearchPath = list; diff --git a/src/plugins/debugger/debuggerruncontrol.h b/src/plugins/debugger/debuggerruncontrol.h index 4a2898fc3cd..460313f245c 100644 --- a/src/plugins/debugger/debuggerruncontrol.h +++ b/src/plugins/debugger/debuggerruncontrol.h @@ -81,6 +81,10 @@ public: Internal::DebuggerRunParameters &runParameters() { return m_runParameters; } + void setLldbPlatform(const QString &platform); + void addQmlServerInferiorCommandLineArgumentIfNeeded(); + void setupPortsGatherer(); + protected: bool isCppDebugging() const; bool isQmlDebugging() const; @@ -88,11 +92,9 @@ protected: void setUsePortsGatherer(bool useCpp, bool useQml); void addSolibSearchDir(const QString &str); - void addQmlServerInferiorCommandLineArgumentIfNeeded(); void modifyDebuggerEnvironment(const Utils::EnvironmentItems &item); void addSearchDirectory(const Utils::FilePath &dir); - void setLldbPlatform(const QString &platform); void setRemoteChannel(const QUrl &url); void setUseTargetAsync(bool on); void setSkipExecutableValidation(bool on); diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index b9552f09953..3a92ec267b7 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -18,29 +18,6 @@ using namespace Utils; namespace RemoteLinux::Internal { -class RemoteLinuxDebugWorker final : public DebuggerRunTool -{ -public: - explicit RemoteLinuxDebugWorker(RunControl *runControl) - : DebuggerRunTool(runControl, DoNotAllowTerminal) - { - setId("RemoteLinuxDebugWorker"); - - setUsePortsGatherer(isCppDebugging(), isQmlDebugging()); - addQmlServerInferiorCommandLineArgumentIfNeeded(); - setUseDebugServer({}, true, true); - - setStartMode(AttachToRemoteServer); - setCloseMode(KillAndExitMonitorAtClose); - setUseExtendedRemote(true); - - if (runControl->device()->osType() == Utils::OsTypeMac) - setLldbPlatform("remote-macosx"); - else - setLldbPlatform("remote-linux"); - } -}; - class RemoteLinuxQmlToolingSupport final : public SimpleTargetRunner { public: @@ -93,7 +70,24 @@ class RemoteLinuxDebugWorkerFactory final : public ProjectExplorer::RunWorkerFac public: RemoteLinuxDebugWorkerFactory() { - setProduct(); + setProducer([](RunControl *rc) { + auto debugger = new DebuggerRunTool(rc, DebuggerRunTool::DoNotAllowTerminal); + debugger->setId("RemoteLinuxDebugWorker"); + + debugger->setupPortsGatherer(); + debugger->addQmlServerInferiorCommandLineArgumentIfNeeded(); + debugger->setUseDebugServer({}, true, true); + + debugger->setStartMode(AttachToRemoteServer); + debugger->setCloseMode(KillAndExitMonitorAtClose); + debugger->setUseExtendedRemote(true); + + if (rc->device()->osType() == Utils::OsTypeMac) + debugger->setLldbPlatform("remote-macosx"); + else + debugger->setLldbPlatform("remote-linux"); + return debugger; + }); addSupportedRunMode(ProjectExplorer::Constants::DEBUG_RUN_MODE); addSupportedDeviceType(Constants::GenericLinuxOsType); setSupportedRunConfigs(supportedRunConfigs());