From 5b33660a575e71b0eb7a70593b69d6efbd1ceebd Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 5 Aug 2019 16:26:20 +0200 Subject: [PATCH] Debugger: Allow spaces in arguments with LLDB Change-Id: Iebc6f7975e9a306805911ed18eb4689074abd891 Task-number: QTCREATORBUG-22811 Reviewed-by: Christian Stenger --- share/qtcreator/debugger/lldbbridge.py | 16 ++-------------- src/plugins/debugger/lldb/lldbengine.cpp | 2 +- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index f7cd2f591bb..36302be0d6a 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -841,7 +841,7 @@ class Dumper(DumperBase): self.startMode_ = args.get('startmode', 1) self.breakOnMain_ = args.get('breakonmain', 0) self.useTerminal_ = args.get('useterminal', 0) - self.processArgs_ = self.hexdecode(args.get('processargs')) + self.processArgs_ = self.hexdecode(args.get('processargs', '')).split('\0') self.environment_ = args.get('environment', []) self.environment_ = list(map(lambda x: self.hexdecode(x), self.environment_)) self.attachPid_ = args.get('attachpid', 0) @@ -932,19 +932,7 @@ class Dumper(DumperBase): else: self.reportState('enginerunfailed') else: - # This does not seem to work on Linux nor macOS? - #launchInfo = lldb.SBLaunchInfo([self.processArgs_]) - #launchInfo.SetShellExpandArguments(True) - args = [] - try: - import subprocess - cmd = 'for x in {} ; do printf "%s\n" "$x" ; done' \ - .format(self.processArgs_) - args = subprocess.check_output(cmd, shell=True, cwd=self.workingDirectory_).split() - except: - # Wrong, but... - args = self.processArgs_ - launchInfo = lldb.SBLaunchInfo(args) + launchInfo = lldb.SBLaunchInfo(self.processArgs_) launchInfo.SetWorkingDirectory(self.workingDirectory_) launchInfo.SetEnvironmentEntries(self.environment_, False) if self.breakOnMain_: diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 3047fb8ad4b..ee0fd4f087b 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -275,7 +275,7 @@ void LldbEngine::setupEngine() cmd2.arg("nativemixed", isNativeMixedActive()); cmd2.arg("workingdirectory", rp.inferior.workingDirectory); cmd2.arg("environment", rp.inferior.environment.toStringList()); - cmd2.arg("processargs", toHex(rp.inferior.commandLineArguments)); + cmd2.arg("processargs", toHex(QtcProcess::splitArgs(rp.inferior.commandLineArguments).join(QChar(0)))); if (terminal()) { const qint64 attachedPID = terminal()->applicationPid();