forked from qt-creator/qt-creator
Debugger: Fix environment passing with LLDB
Change-Id: Ic51a5ee1b9ef69b60279f045175be6d59b53582b Reviewed-by: Filipe Azevedo <filipe.azevedo@kdab.com> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -789,10 +789,9 @@ class Dumper(DumperBase):
|
|||||||
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_ = args.get('processargs', [])
|
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.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.attachPid_ = args.get('attachpid', 0)
|
||||||
self.sysRoot_ = args.get('sysroot', '')
|
self.sysRoot_ = args.get('sysroot', '')
|
||||||
self.remoteChannel_ = args.get('remotechannel', '')
|
self.remoteChannel_ = args.get('remotechannel', '')
|
||||||
@@ -883,14 +882,7 @@ class Dumper(DumperBase):
|
|||||||
else:
|
else:
|
||||||
launchInfo = lldb.SBLaunchInfo(self.processArgs_)
|
launchInfo = lldb.SBLaunchInfo(self.processArgs_)
|
||||||
launchInfo.SetWorkingDirectory(self.workingDirectory_)
|
launchInfo.SetWorkingDirectory(self.workingDirectory_)
|
||||||
environmentList = [key + '=' + value for key,value in os.environ.items()]
|
launchInfo.SetEnvironmentEntries(self.environment_, False)
|
||||||
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)
|
|
||||||
if self.breakOnMain_:
|
if self.breakOnMain_:
|
||||||
self.createBreakpointAtMain()
|
self.createBreakpointAtMain()
|
||||||
self.process = self.target.Launch(launchInfo, error)
|
self.process = self.target.Launch(launchInfo, error)
|
||||||
|
@@ -301,17 +301,6 @@ void LldbEngine::startLldbStage2()
|
|||||||
|
|
||||||
void LldbEngine::setupInferior()
|
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);
|
const QString path = stringSetting(ExtraDumperFile);
|
||||||
if (!path.isEmpty() && QFileInfo(path).isReadable()) {
|
if (!path.isEmpty() && QFileInfo(path).isReadable()) {
|
||||||
DebuggerCommand cmd("addDumperModule");
|
DebuggerCommand cmd("addDumperModule");
|
||||||
@@ -345,12 +334,13 @@ void LldbEngine::setupInferior()
|
|||||||
cmd2.arg("useterminal", rp.useTerminal);
|
cmd2.arg("useterminal", rp.useTerminal);
|
||||||
cmd2.arg("startmode", rp.startMode);
|
cmd2.arg("startmode", rp.startMode);
|
||||||
cmd2.arg("nativemixed", isNativeMixedActive());
|
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);
|
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;
|
QJsonArray processArgs;
|
||||||
foreach (const QString &arg, args.toUnixArgs())
|
foreach (const QString &arg, args.toUnixArgs())
|
||||||
processArgs.append(QLatin1String(arg.toUtf8().toHex()));
|
processArgs.append(QLatin1String(arg.toUtf8().toHex()));
|
||||||
|
Reference in New Issue
Block a user