From d98d9025b8a0fd842ce5ee4d157f4e58577f4458 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 6 Dec 2016 15:39:05 +0100 Subject: [PATCH] Debugger: Fix environment passing with LLDB Change-Id: Ic51a5ee1b9ef69b60279f045175be6d59b53582b Reviewed-by: Filipe Azevedo Reviewed-by: Eike Ziller --- share/qtcreator/debugger/lldbbridge.py | 14 +++----------- src/plugins/debugger/lldb/lldbengine.cpp | 20 +++++--------------- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index bf3dae2f2db..8bd31a2f68e 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -789,10 +789,9 @@ class Dumper(DumperBase): self.breakOnMain_ = args.get('breakonmain', 0) self.useTerminal_ = args.get('useterminal', 0) self.processArgs_ = args.get('processargs', []) - self.dyldImageSuffix = args.get('dyldimagesuffix', '') - self.dyldLibraryPath = args.get('dyldlibrarypath', '') - self.dyldFrameworkPath = args.get('dyldframeworkpath', '') self.processArgs_ = list(map(lambda x: self.hexdecode(x), self.processArgs_)) + self.environment_ = args.get('environment', []) + self.environment_ = list(map(lambda x: self.hexdecode(x), self.environment_)) self.attachPid_ = args.get('attachpid', 0) self.sysRoot_ = args.get('sysroot', '') self.remoteChannel_ = args.get('remotechannel', '') @@ -883,14 +882,7 @@ class Dumper(DumperBase): else: launchInfo = lldb.SBLaunchInfo(self.processArgs_) launchInfo.SetWorkingDirectory(self.workingDirectory_) - environmentList = [key + '=' + value for key,value in os.environ.items()] - if self.dyldImageSuffix: - environmentList.append('DYLD_IMAGE_SUFFIX=' + self.dyldImageSuffix) - if self.dyldLibraryPath: - environmentList.append('DYLD_LIBRARY_PATH=' + self.dyldLibraryPath) - if self.dyldFrameworkPath: - environmentList.append('DYLD_FRAMEWORK_PATH=' + self.dyldFrameworkPath) - launchInfo.SetEnvironmentEntries(environmentList, False) + launchInfo.SetEnvironmentEntries(self.environment_, False) if self.breakOnMain_: self.createBreakpointAtMain() self.process = self.target.Launch(launchInfo, error) diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 00830be482c..a669515c3bb 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -301,17 +301,6 @@ void LldbEngine::startLldbStage2() void LldbEngine::setupInferior() { - Environment sysEnv = Environment::systemEnvironment(); - Environment runEnv = runParameters().inferior.environment; - foreach (const EnvironmentItem &item, sysEnv.diff(runEnv)) { - DebuggerCommand cmd("executeDebuggerCommand"); - if (item.unset) - cmd.arg("command", "settings remove target.env-vars " + item.name); - else - cmd.arg("command", "settings set target.env-vars '" + item.name + '=' + item.value + '\''); - runCommand(cmd); - } - const QString path = stringSetting(ExtraDumperFile); if (!path.isEmpty() && QFileInfo(path).isReadable()) { DebuggerCommand cmd("addDumperModule"); @@ -345,12 +334,13 @@ void LldbEngine::setupInferior() cmd2.arg("useterminal", rp.useTerminal); cmd2.arg("startmode", rp.startMode); cmd2.arg("nativemixed", isNativeMixedActive()); - - cmd2.arg("dyldimagesuffix", rp.inferior.environment.value("DYLD_IMAGE_SUFFIX")); - cmd2.arg("dyldframeworkpath", rp.inferior.environment.value("DYLD_LIBRARY_PATH")); - cmd2.arg("dyldlibrarypath", rp.inferior.environment.value("DYLD_FRAMEWORK_PATH")); cmd2.arg("workingdirectory", rp.inferior.workingDirectory); + QJsonArray env; + foreach (const QString &item, rp.inferior.environment.toStringList()) + env.append(toHex(item)); + cmd2.arg("environment", env); + QJsonArray processArgs; foreach (const QString &arg, args.toUnixArgs()) processArgs.append(QLatin1String(arg.toUtf8().toHex()));