diff --git a/src/plugins/debugger/dap/dapclient.cpp b/src/plugins/debugger/dap/dapclient.cpp index f63d45b2bb9..b5c95c675bd 100644 --- a/src/plugins/debugger/dap/dapclient.cpp +++ b/src/plugins/debugger/dap/dapclient.cpp @@ -58,10 +58,13 @@ void DapClient::sendInitialize() postRequest("initialize", QJsonObject{{"clientID", "QtCreator"}, {"clientName", "QtCreator"}}); } -void DapClient::sendLaunch(const Utils::FilePath &executable) +void DapClient::sendLaunch(const Utils::CommandLine &command) { postRequest("launch", - QJsonObject{{"noDebug", false}, {"program", executable.path()}, {"__restart", ""}}); + QJsonObject{{"noDebug", false}, + {"program", command.executable().path()}, + {"args", command.arguments()}, + {"__restart", ""}}); } void DapClient::sendAttach() diff --git a/src/plugins/debugger/dap/dapclient.h b/src/plugins/debugger/dap/dapclient.h index d2a6f52bb22..8f0603693c2 100644 --- a/src/plugins/debugger/dap/dapclient.h +++ b/src/plugins/debugger/dap/dapclient.h @@ -80,7 +80,7 @@ public: virtual void sendInitialize(); - void sendLaunch(const Utils::FilePath &executable); + void sendLaunch(const Utils::CommandLine &command); void sendAttach(); void sendConfigurationDone(); diff --git a/src/plugins/debugger/dap/dapengine.cpp b/src/plugins/debugger/dap/dapengine.cpp index 62ce2bef359..dbb0c177a94 100644 --- a/src/plugins/debugger/dap/dapengine.cpp +++ b/src/plugins/debugger/dap/dapengine.cpp @@ -195,7 +195,7 @@ void DapEngine::handleDapInitialize() { QTC_ASSERT(state() == EngineRunRequested, qCDebug(logCategory()) << state()); - m_dapClient->sendLaunch(runParameters().inferior.command.executable()); + m_dapClient->sendLaunch(runParameters().inferior.command); qCDebug(logCategory()) << "handleDapLaunch"; } diff --git a/src/plugins/debugger/dap/gdbdapengine.cpp b/src/plugins/debugger/dap/gdbdapengine.cpp index 3934aebe9d8..d927de6bad4 100644 --- a/src/plugins/debugger/dap/gdbdapengine.cpp +++ b/src/plugins/debugger/dap/gdbdapengine.cpp @@ -55,6 +55,8 @@ public: void start() override { m_proc.setProcessMode(ProcessMode::Writer); + if (m_runParameters.debugger.workingDirectory.isDir()) + m_proc.setWorkingDirectory(m_runParameters.debugger.workingDirectory); m_proc.setEnvironment(m_runParameters.debugger.environment); m_proc.setCommand(m_cmd); m_proc.start();