forked from qt-creator/qt-creator
Debugger: Allow spaces in arguments with LLDB
Change-Id: Iebc6f7975e9a306805911ed18eb4689074abd891 Task-number: QTCREATORBUG-22811 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -841,7 +841,7 @@ class Dumper(DumperBase):
|
|||||||
self.startMode_ = args.get('startmode', 1)
|
self.startMode_ = args.get('startmode', 1)
|
||||||
self.breakOnMain_ = args.get('breakonmain', 0)
|
self.breakOnMain_ = args.get('breakonmain', 0)
|
||||||
self.useTerminal_ = args.get('useterminal', 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_ = args.get('environment', [])
|
||||||
self.environment_ = list(map(lambda x: self.hexdecode(x), self.environment_))
|
self.environment_ = list(map(lambda x: self.hexdecode(x), self.environment_))
|
||||||
self.attachPid_ = args.get('attachpid', 0)
|
self.attachPid_ = args.get('attachpid', 0)
|
||||||
@@ -932,19 +932,7 @@ class Dumper(DumperBase):
|
|||||||
else:
|
else:
|
||||||
self.reportState('enginerunfailed')
|
self.reportState('enginerunfailed')
|
||||||
else:
|
else:
|
||||||
# This does not seem to work on Linux nor macOS?
|
launchInfo = lldb.SBLaunchInfo(self.processArgs_)
|
||||||
#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.SetWorkingDirectory(self.workingDirectory_)
|
||||||
launchInfo.SetEnvironmentEntries(self.environment_, False)
|
launchInfo.SetEnvironmentEntries(self.environment_, False)
|
||||||
if self.breakOnMain_:
|
if self.breakOnMain_:
|
||||||
|
|||||||
@@ -275,7 +275,7 @@ void LldbEngine::setupEngine()
|
|||||||
cmd2.arg("nativemixed", isNativeMixedActive());
|
cmd2.arg("nativemixed", isNativeMixedActive());
|
||||||
cmd2.arg("workingdirectory", rp.inferior.workingDirectory);
|
cmd2.arg("workingdirectory", rp.inferior.workingDirectory);
|
||||||
cmd2.arg("environment", rp.inferior.environment.toStringList());
|
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()) {
|
if (terminal()) {
|
||||||
const qint64 attachedPID = terminal()->applicationPid();
|
const qint64 attachedPID = terminal()->applicationPid();
|
||||||
|
|||||||
Reference in New Issue
Block a user