summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-11-07 12:31:30 +0100
committerhjk <hjk@qt.io>2018-11-08 14:21:21 +0000
commitc016c6737b4d9392d9df4f2f0b5c10b4511c4ed0 (patch)
treef8212d39e06776f980b9595135a9aa1b698d0eb5 /share
parent0a29e12d0cad2921a187d8d895c7b70381a25f40 (diff)
downloadqt-creator-c016c6737b4d9392d9df4f2f0b5c10b4511c4ed0.tar.gz
Debugger: Fix LLDB start with complex command lines
Fixes: QTCREATORBUG-21433 Change-Id: I1a248272566eac7f5fd07a8346500d245b62fbfa Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/lldbbridge.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index a6d844a2b4..70a682a1a9 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -830,8 +830,7 @@ class Dumper(DumperBase):
self.startMode_ = args.get('startmode', 1)
self.breakOnMain_ = args.get('breakonmain', 0)
self.useTerminal_ = args.get('useterminal', 0)
- self.processArgs_ = args.get('processargs', [])
- self.processArgs_ = list(map(lambda x: self.hexdecode(x), self.processArgs_))
+ self.processArgs_ = self.hexdecode(args.get('processargs'))
self.environment_ = args.get('environment', [])
self.environment_ = list(map(lambda x: self.hexdecode(x), self.environment_))
self.attachPid_ = args.get('attachpid', 0)
@@ -928,7 +927,19 @@ class Dumper(DumperBase):
else:
self.reportState('enginerunfailed')
else:
- launchInfo = lldb.SBLaunchInfo(self.processArgs_)
+ # 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.SetWorkingDirectory(self.workingDirectory_)
launchInfo.SetEnvironmentEntries(self.environment_, False)
if self.breakOnMain_: