diff --git a/src/plugins/valgrind/valgrindrunner.cpp b/src/plugins/valgrind/valgrindrunner.cpp index 827e2c2b4e3..db91d0edbf4 100644 --- a/src/plugins/valgrind/valgrindrunner.cpp +++ b/src/plugins/valgrind/valgrindrunner.cpp @@ -82,17 +82,17 @@ public: bool ValgrindRunner::Private::run() { - QStringList arguments; + CommandLine cmd{FilePath::fromString(m_valgrindExecutable)}; if (!localServerAddress.isNull()) { if (!q->startServers()) return false; - arguments.append("--child-silent-after-fork=yes"); + cmd.addArg("--child-silent-after-fork=yes"); bool enableXml = !disableXml; - auto handleSocketParameter = [&enableXml, &arguments](const QString &prefix, const QTcpServer &tcpServer) + auto handleSocketParameter = [&enableXml, &cmd](const QString &prefix, const QTcpServer &tcpServer) { QHostAddress serverAddress = tcpServer.serverAddress(); if (serverAddress.protocol() != QAbstractSocket::IPv4Protocol) { @@ -101,8 +101,8 @@ bool ValgrindRunner::Private::run() qWarning("Need IPv4 for valgrind"); enableXml = false; } else { - arguments << QString("%1=%2:%3").arg(prefix).arg(serverAddress.toString()) - .arg(tcpServer.serverPort()); + cmd.addArg(QString("%1=%2:%3").arg(prefix).arg(serverAddress.toString()) + .arg(tcpServer.serverPort())); } }; @@ -110,9 +110,9 @@ bool ValgrindRunner::Private::run() handleSocketParameter("--log-socket", logServer); if (enableXml) - arguments << "--xml=yes"; + cmd.addArg("--xml=yes"); } - arguments += m_valgrindArguments; + cmd.addArgs(m_valgrindArguments); m_valgrindProcess.setProcessChannelMode(channelMode); // consider appending our options last so they override any interfering user-supplied options @@ -138,18 +138,17 @@ bool ValgrindRunner::Private::run() if (HostOsInfo::isMacHost()) // May be slower to start but without it we get no filenames for symbols. - arguments << "--dsymutil=yes"; - arguments << m_debuggee.executable; + cmd.addArg("--dsymutil=yes"); + cmd.addArg(m_debuggee.executable); + cmd.addArgs(m_debuggee.commandLineArguments, CommandLine::Raw); + + emit q->valgrindExecuted(cmd.toUserOutput()); Runnable valgrind; - valgrind.executable = m_valgrindExecutable; + valgrind.setCommandLine(cmd); valgrind.workingDirectory = m_debuggee.workingDirectory; valgrind.environment = m_debuggee.environment; valgrind.device = m_device; - valgrind.commandLineArguments = QtcProcess::joinArgs(arguments, m_device->osType()); - Utils::QtcProcess::addArgs(&valgrind.commandLineArguments, m_debuggee.commandLineArguments); - emit q->valgrindExecuted(QtcProcess::quoteArg(valgrind.executable) + ' ' - + valgrind.commandLineArguments); if (m_device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) m_valgrindProcess.start(valgrind);