forked from qt-creator/qt-creator
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:
@@ -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);
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user