From d954c944fe83fdb66f22752065e207b46a28765a Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 23 Aug 2017 13:48:44 +0200 Subject: [PATCH] Fix application output of qtestlib projects when debugging with CDB Tell QTestLib to use OutputDebugString for logging when "Run in Terminal" is turned off. This way we are able to distinguish CDB's output from the debuggee's output. Task-number: QTCREATORBUG-16161 Change-Id: Ie5e6e4a0cbb853167766f782521101eff2e1963a Reviewed-by: hjk Reviewed-by: Christian Stenger --- src/plugins/debugger/cdb/cdbengine.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 7d632720f14..b8f240e5d88 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -607,10 +607,17 @@ bool CdbEngine::launchCDB(const DebuggerRunParameters &sp, QString *errorMessage m_outputBuffer.clear(); m_autoBreakPointCorrection = false; - const QStringList inferiorEnvironment = sp.inferior.environment.size() == 0 ? - QProcessEnvironment::systemEnvironment().toStringList() : - sp.inferior.environment.toStringList(); - m_process.setEnvironment(mergeEnvironment(inferiorEnvironment, extensionFi.absolutePath())); + + Utils::Environment inferiorEnvironment = sp.inferior.environment.size() == 0 + ? Utils::Environment::systemEnvironment() : sp.inferior.environment; + + // Make sure that QTestLib uses OutputDebugString for logging. + const QString qtLoggingToConsoleKey = QStringLiteral("QT_LOGGING_TO_CONSOLE"); + if (!sp.useTerminal && !inferiorEnvironment.hasKey(qtLoggingToConsoleKey)) + inferiorEnvironment.set(qtLoggingToConsoleKey, QString(QLatin1Char('0'))); + + m_process.setEnvironment(mergeEnvironment(inferiorEnvironment.toStringList(), + extensionFi.absolutePath())); if (!sp.inferior.workingDirectory.isEmpty()) m_process.setWorkingDirectory(sp.inferior.workingDirectory);