diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index e0f7ec182f0..68cba4dee47 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -699,8 +699,6 @@ public: Perspective m_perspective{Constants::PRESET_PERSPECTIVE_ID, Tr::tr("Debugger")}; Perspective m_perspectiveDap{Constants::DAP_PERSPECTIVE_ID, Tr::tr("DAP")}; - DebuggerRunWorkerFactory debuggerWorkerFactory; - std::optional attachToUnstartedApplicationDialogLastPosition; // FIXME: Needed? @@ -777,6 +775,8 @@ QWidget *DebuggerPluginPrivate::createEngineManagerWindow(BaseTreeView *engineMa DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments) { + setupDebuggerRunWorker(); + qRegisterMetaType("ContextData"); qRegisterMetaType("DebuggerRunParameters"); qRegisterMetaType(); diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 6d9803b0288..1ed313de429 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -689,20 +689,27 @@ void DebuggerRunTool::startDebugServerIfNeededAndContinueStartup() d->debuggerServerProc.start(); } -// DebuggerRunWorkerFactory - -DebuggerRunWorkerFactory::DebuggerRunWorkerFactory() +class DebuggerRunWorkerFactory final : public ProjectExplorer::RunWorkerFactory { - setProduct(); - setId(Constants::DEBUGGER_RUN_FACTORY); - addSupportedRunMode(ProjectExplorer::Constants::DEBUG_RUN_MODE); - addSupportedRunMode(ProjectExplorer::Constants::DAP_CMAKE_DEBUG_RUN_MODE); - addSupportedRunMode(ProjectExplorer::Constants::DAP_GDB_DEBUG_RUN_MODE); - addSupportedRunMode(ProjectExplorer::Constants::DAP_LLDB_DEBUG_RUN_MODE); - addSupportedDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); - addSupportedDeviceType("DockerDeviceType"); +public: + DebuggerRunWorkerFactory() + { + setProduct(); + setId(Constants::DEBUGGER_RUN_FACTORY); + addSupportedRunMode(ProjectExplorer::Constants::DEBUG_RUN_MODE); + addSupportedRunMode(ProjectExplorer::Constants::DAP_CMAKE_DEBUG_RUN_MODE); + addSupportedRunMode(ProjectExplorer::Constants::DAP_GDB_DEBUG_RUN_MODE); + addSupportedRunMode(ProjectExplorer::Constants::DAP_LLDB_DEBUG_RUN_MODE); + addSupportedDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); + addSupportedDeviceType("DockerDeviceType"); - addSupportForLocalRunConfigs(); + addSupportForLocalRunConfigs(); + } +}; + +void setupDebuggerRunWorker() +{ + static DebuggerRunWorkerFactory theDebuggerRunWorkerFactory; } } // Debugger diff --git a/src/plugins/debugger/debuggerruncontrol.h b/src/plugins/debugger/debuggerruncontrol.h index b6e5e7947f0..6ea6e0275e5 100644 --- a/src/plugins/debugger/debuggerruncontrol.h +++ b/src/plugins/debugger/debuggerruncontrol.h @@ -50,11 +50,7 @@ private: DebuggerRunParameters m_runParameters; }; -class DebuggerRunWorkerFactory final : public ProjectExplorer::RunWorkerFactory -{ -public: - DebuggerRunWorkerFactory(); -}; +void setupDebuggerRunWorker(); class SimpleDebugRunnerFactory final : public ProjectExplorer::RunWorkerFactory {