diff --git a/src/plugins/debugger/debuggeritem.cpp b/src/plugins/debugger/debuggeritem.cpp index 6eb1b3e6808..a9617fc8e7f 100644 --- a/src/plugins/debugger/debuggeritem.cpp +++ b/src/plugins/debugger/debuggeritem.cpp @@ -114,7 +114,7 @@ void DebuggerItem::createId() m_id = QUuid::createUuid().toString(); } -void DebuggerItem::reinitializeFromFile(const Environment &sysEnv, QString *error) +void DebuggerItem::reinitializeFromFile(QString *error, Utils::Environment *customEnv) { // CDB only understands the single-dash -version, whereas GDB and LLDB are // happy with both -version and --version. So use the "working" -version @@ -137,7 +137,8 @@ void DebuggerItem::reinitializeFromFile(const Environment &sysEnv, QString *erro return; } - Environment env = sysEnv.isValid() ? sysEnv : Environment::systemEnvironment(); + Environment env = customEnv ? *customEnv : m_command.deviceEnvironment(); + // Prevent calling lldb on Windows because the lldb from the llvm package is linked against // python but does not contain a python dll. const bool isAndroidNdkLldb = DebuggerItem::addAndroidLldbPythonEnv(m_command, env); @@ -186,18 +187,8 @@ void DebuggerItem::reinitializeFromFile(const Environment &sysEnv, QString *erro const bool unableToFindAVersion = (0 == version); const bool gdbSupportsConfigurationFlag = (version >= 70700); if (gdbSupportsConfigurationFlag || unableToFindAVersion) { - - auto gdbConfiguration = [this, &output, &sysEnv]() { - if (!output.contains("qnx")) - return getGdbConfiguration(m_command, sysEnv); - - Environment env = sysEnv; - env.set("QNX_TARGET", QString()); - return getGdbConfiguration(m_command, env); - }; - - const QString gdbTargetAbiString = - extractGdbTargetAbiStringFromGdbOutput(gdbConfiguration()); + const QString gdbTargetAbiString = extractGdbTargetAbiStringFromGdbOutput( + getGdbConfiguration(m_command, env)); if (!gdbTargetAbiString.isEmpty()) { m_abis.append(Abi::abiFromTargetTriplet(gdbTargetAbiString)); return; diff --git a/src/plugins/debugger/debuggeritem.h b/src/plugins/debugger/debuggeritem.h index 7f865a507b9..223f953197a 100644 --- a/src/plugins/debugger/debuggeritem.h +++ b/src/plugins/debugger/debuggeritem.h @@ -76,8 +76,7 @@ public: bool operator==(const DebuggerItem &other) const; bool operator!=(const DebuggerItem &other) const { return !operator==(other); } - void reinitializeFromFile(const Utils::Environment &sysEnv = Utils::Environment::systemEnvironment(), - QString *error = nullptr); + void reinitializeFromFile(QString *error = nullptr, Utils::Environment *env = nullptr); Utils::FilePath workingDirectory() const { return m_workingDirectory; } void setWorkingDirectory(const Utils::FilePath &workingPath) { m_workingDirectory = workingPath; } diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp index 8602f031fdf..48eb54d72a6 100644 --- a/src/plugins/debugger/debuggeritemmanager.cpp +++ b/src/plugins/debugger/debuggeritemmanager.cpp @@ -296,7 +296,7 @@ DebuggerItemConfigWidget::DebuggerItemConfigWidget() DebuggerItem item; item.setCommand(m_binaryChooser->filePath()); errorMessage->clear(); - item.reinitializeFromFile({}, errorMessage); + item.reinitializeFromFile(errorMessage); return errorMessage->isEmpty(); }); m_binaryChooser->setAllowPathFromDevice(true); diff --git a/src/plugins/qnx/qnxconfiguration.cpp b/src/plugins/qnx/qnxconfiguration.cpp index 84ba0baa488..8c9bdf8347d 100644 --- a/src/plugins/qnx/qnxconfiguration.cpp +++ b/src/plugins/qnx/qnxconfiguration.cpp @@ -236,9 +236,10 @@ QVariant QnxConfiguration::createDebugger(const Target &target) { Utils::Environment sysEnv = Utils::Environment::systemEnvironment(); sysEnv.modify(qnxEnvironmentItems()); + Debugger::DebuggerItem debugger; debugger.setCommand(target.m_debuggerPath); - debugger.reinitializeFromFile(sysEnv); + debugger.reinitializeFromFile(nullptr, &sysEnv); debugger.setAutoDetected(true); debugger.setUnexpandedDisplayName(Tr::tr("Debugger for %1 (%2)") .arg(displayName()) @@ -416,10 +417,11 @@ void QnxConfiguration::assignDebuggersToTargets() {{HostOsInfo::withExecutableSuffix("nto*-gdb")}, QDir::Files}); Environment sysEnv = Environment::systemEnvironment(); sysEnv.modify(qnxEnvironmentItems()); + for (const FilePath &debuggerPath : debuggerNames) { DebuggerItem item; item.setCommand(debuggerPath); - item.reinitializeFromFile(sysEnv); + item.reinitializeFromFile(nullptr, &sysEnv); bool found = false; for (const Abi &abi : item.abis()) { for (Target &target : m_targets) {