diff --git a/src/plugins/debugger/dap/dapclient.cpp b/src/plugins/debugger/dap/dapclient.cpp index 00fe60da022..b67d7ec4754 100644 --- a/src/plugins/debugger/dap/dapclient.cpp +++ b/src/plugins/debugger/dap/dapclient.cpp @@ -237,6 +237,8 @@ void DapClient::emitSignals(const QJsonDocument &doc) type = DapResponseType::SetBreakpoints; } else if (command == "setFunctionBreakpoints") { type = DapResponseType::SetFunctionBreakpoints; + } else if (command == "attach") { + type = DapResponseType::Attach; } emit responseReady(type, ob); return; diff --git a/src/plugins/debugger/dap/dapclient.h b/src/plugins/debugger/dap/dapclient.h index 92acb0ddb1a..f4c3df2ef3a 100644 --- a/src/plugins/debugger/dap/dapclient.h +++ b/src/plugins/debugger/dap/dapclient.h @@ -54,6 +54,7 @@ enum class DapResponseType Evaluate, SetBreakpoints, SetFunctionBreakpoints, + Attach, Unknown }; diff --git a/src/plugins/debugger/dap/dapengine.cpp b/src/plugins/debugger/dap/dapengine.cpp index e311bb36822..f19ab2aacd1 100644 --- a/src/plugins/debugger/dap/dapengine.cpp +++ b/src/plugins/debugger/dap/dapengine.cpp @@ -692,6 +692,9 @@ void DapEngine::handleResponse(DapResponseType type, const QJsonObject &response case DapResponseType::SetBreakpoints: handleBreakpointResponse(response); break; + case DapResponseType::Attach: + notifyInferiorRunOk(); + break; default: showMessage("UNKNOWN RESPONSE:" + command); }; diff --git a/src/plugins/debugger/dap/lldbdapengine.cpp b/src/plugins/debugger/dap/lldbdapengine.cpp index 32a85c89d41..58622cf8a4f 100644 --- a/src/plugins/debugger/dap/lldbdapengine.cpp +++ b/src/plugins/debugger/dap/lldbdapengine.cpp @@ -120,7 +120,15 @@ void LldbDapEngine::handleDapInitialize() } QTC_ASSERT(state() == EngineRunRequested, qCDebug(logCategory()) << state()); - m_dapClient->postRequest("attach", QJsonObject{{"__restart", ""}}); + + const DebuggerRunParameters &rp = runParameters(); + m_dapClient->postRequest( + "attach", + QJsonObject{ + {"program", rp.inferior.command.executable().path()}, + {"pid", QString::number(rp.attachPID.pid())}, + {"__restart", ""}}); + qCDebug(logCategory()) << "handleDapAttach"; } @@ -146,9 +154,6 @@ void LldbDapEngine::setupEngine() const DebuggerRunParameters &rp = runParameters(); CommandLine cmd{rp.debugger.command.executable()}; - if (isLocalAttachEngine()) - cmd.addArgs({"--debugger-pid", QString::number(rp.attachPID.pid())}); - IDataProvider *dataProvider = new ProcessDataProvider(rp, cmd, this); m_dapClient = new LldbDapClient(dataProvider, this);