LLDB-DAP: Fix passing program arguments

This way if we pass arguments to the Run configuration, they will reach
the inferior whilst being debugged.

Change-Id: I93d99ff0d69b4ec710887097efc643fb48c8acca
Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
This commit is contained in:
Cristian Adam
2024-06-25 16:50:30 +02:00
parent 3b7e782bc6
commit d9d5b87141
2 changed files with 6 additions and 11 deletions

View File

@@ -115,14 +115,6 @@ LldbDapEngine::LldbDapEngine()
setDebuggerType("DAP"); setDebuggerType("DAP");
} }
QJsonArray LldbDapEngine::environment() const
{
QJsonArray envArray;
for (const QString &value : runParameters().inferior.environment.toDictionary().toStringList())
envArray.append(value);
return envArray;
}
QJsonArray LldbDapEngine::sourceMap() const QJsonArray LldbDapEngine::sourceMap() const
{ {
QJsonArray sourcePathMapping; QJsonArray sourcePathMapping;
@@ -160,11 +152,13 @@ void LldbDapEngine::handleDapInitialize()
const QJsonArray commands = preRunCommands(); const QJsonArray commands = preRunCommands();
if (!isLocalAttachEngine()) { if (!isLocalAttachEngine()) {
const QJsonArray env = environment(); const QJsonArray env = QJsonArray::fromStringList(
rp.inferior.environment.toDictionary().toStringList());
const QJsonArray args = QJsonArray::fromStringList(rp.inferior.command.splitArguments());
QJsonObject launchJson{ QJsonObject launchJson{
{"noDebug", false}, {"noDebug", false},
{"program", rp.inferior.command.executable().path()}, {"program", rp.inferior.command.executable().path()},
{"args", rp.inferior.command.arguments()},
{"cwd", rp.inferior.workingDirectory.path()}, {"cwd", rp.inferior.workingDirectory.path()},
{"env", env}, {"env", env},
{"__restart", ""}, {"__restart", ""},
@@ -173,6 +167,8 @@ void LldbDapEngine::handleDapInitialize()
launchJson.insert("sourceMap", map); launchJson.insert("sourceMap", map);
if (!commands.isEmpty()) if (!commands.isEmpty())
launchJson.insert("preRunCommands", commands); launchJson.insert("preRunCommands", commands);
if (!args.isEmpty())
launchJson.insert("args", args);
m_dapClient->postRequest("launch", launchJson); m_dapClient->postRequest("launch", launchJson);

View File

@@ -22,7 +22,6 @@ private:
bool acceptsBreakpoint(const BreakpointParameters &bp) const override; bool acceptsBreakpoint(const BreakpointParameters &bp) const override;
const QLoggingCategory &logCategory() override; const QLoggingCategory &logCategory() override;
QJsonArray environment() const;
QJsonArray sourceMap() const; QJsonArray sourceMap() const;
QJsonArray preRunCommands() const; QJsonArray preRunCommands() const;
}; };