forked from qt-creator/qt-creator
Valgrind: Add toolargs to command, not to a string list
Removes arg splitting/re-combination roundtrips. Change-Id: I4bc19d3b65f4c685140cea0e190191587f5124e6 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -61,34 +61,32 @@ CallgrindToolRunner::~CallgrindToolRunner()
|
||||
cleanupTempFile();
|
||||
}
|
||||
|
||||
QStringList CallgrindToolRunner::toolArguments() const
|
||||
void CallgrindToolRunner::addToolArguments(CommandLine &cmd) const
|
||||
{
|
||||
QStringList arguments = {"--tool=callgrind"};
|
||||
cmd << "--tool=callgrind";
|
||||
|
||||
if (m_settings.enableCacheSim())
|
||||
arguments << "--cache-sim=yes";
|
||||
cmd << "--cache-sim=yes";
|
||||
|
||||
if (m_settings.enableBranchSim())
|
||||
arguments << "--branch-sim=yes";
|
||||
cmd << "--branch-sim=yes";
|
||||
|
||||
if (m_settings.collectBusEvents())
|
||||
arguments << "--collect-bus=yes";
|
||||
cmd << "--collect-bus=yes";
|
||||
|
||||
if (m_settings.collectSystime())
|
||||
arguments << "--collect-systime=yes";
|
||||
cmd << "--collect-systime=yes";
|
||||
|
||||
if (m_markAsPaused)
|
||||
arguments << "--instr-atstart=no";
|
||||
cmd << "--instr-atstart=no";
|
||||
|
||||
// add extra arguments
|
||||
if (!m_argumentForToggleCollect.isEmpty())
|
||||
arguments << m_argumentForToggleCollect;
|
||||
cmd << m_argumentForToggleCollect;
|
||||
|
||||
arguments << "--callgrind-out-file=" + m_valgrindOutputFile.path();
|
||||
cmd << "--callgrind-out-file=" + m_valgrindOutputFile.path();
|
||||
|
||||
arguments << ProcessArgs::splitArgs(m_settings.callgrindArguments(), HostOsInfo::hostOs());
|
||||
|
||||
return arguments;
|
||||
cmd.addArgs(m_settings.callgrindArguments(), CommandLine::Raw);
|
||||
}
|
||||
|
||||
QString CallgrindToolRunner::progressTitle() const
|
||||
|
||||
@@ -48,7 +48,7 @@ public:
|
||||
Q_ENUM(Option)
|
||||
|
||||
protected:
|
||||
QStringList toolArguments() const override;
|
||||
void addToolArguments(Utils::CommandLine &cmd) const override;
|
||||
QString progressTitle() const override;
|
||||
|
||||
signals:
|
||||
|
||||
@@ -111,7 +111,7 @@ signals:
|
||||
|
||||
private:
|
||||
QString progressTitle() const override;
|
||||
QStringList toolArguments() const override;
|
||||
void addToolArguments(CommandLine &cmd) const override;
|
||||
|
||||
void startDebugger(qint64 valgrindPid);
|
||||
void appendLog(const QByteArray &data);
|
||||
@@ -181,15 +181,15 @@ void MemcheckToolRunner::stop()
|
||||
ValgrindToolRunner::stop();
|
||||
}
|
||||
|
||||
QStringList MemcheckToolRunner::toolArguments() const
|
||||
void MemcheckToolRunner::addToolArguments(CommandLine &cmd) const
|
||||
{
|
||||
QStringList arguments = {"--tool=memcheck", "--gen-suppressions=all"};
|
||||
cmd << "--tool=memcheck" << "--gen-suppressions=all";
|
||||
|
||||
if (m_settings.trackOrigins())
|
||||
arguments << "--track-origins=yes";
|
||||
cmd << "--track-origins=yes";
|
||||
|
||||
if (m_settings.showReachable())
|
||||
arguments << "--show-reachable=yes";
|
||||
cmd << "--show-reachable=yes";
|
||||
|
||||
QString leakCheckValue;
|
||||
switch (m_settings.leakCheckOnFinish()) {
|
||||
@@ -204,19 +204,17 @@ QStringList MemcheckToolRunner::toolArguments() const
|
||||
leakCheckValue = "summary";
|
||||
break;
|
||||
}
|
||||
arguments << "--leak-check=" + leakCheckValue;
|
||||
cmd << "--leak-check=" + leakCheckValue;
|
||||
|
||||
for (const FilePath &file : m_settings.suppressions())
|
||||
arguments << QString("--suppressions=%1").arg(file.path());
|
||||
cmd << QString("--suppressions=%1").arg(file.path());
|
||||
|
||||
arguments << QString("--num-callers=%1").arg(m_settings.numCallers());
|
||||
cmd << QString("--num-callers=%1").arg(m_settings.numCallers());
|
||||
|
||||
if (m_withGdb)
|
||||
arguments << "--vgdb=yes" << "--vgdb-error=0";
|
||||
cmd << "--vgdb=yes" << "--vgdb-error=0";
|
||||
|
||||
arguments << ProcessArgs::splitArgs(m_settings.memcheckArguments(), HostOsInfo::hostOs());
|
||||
|
||||
return arguments;
|
||||
cmd.addArgs(m_settings.memcheckArguments(), CommandLine::Raw);
|
||||
}
|
||||
|
||||
const FilePaths MemcheckToolRunner::suppressionFiles() const
|
||||
|
||||
@@ -74,9 +74,9 @@ void ValgrindToolRunner::start()
|
||||
m_progress.reportStarted();
|
||||
|
||||
CommandLine valgrind{valgrindExecutable};
|
||||
valgrind.addArgs(m_settings.valgrindArguments.value(), CommandLine::Raw);
|
||||
valgrind.addArgs(m_settings.valgrindArguments(), CommandLine::Raw);
|
||||
valgrind.addArgs(genericToolArguments());
|
||||
valgrind.addArgs(toolArguments());
|
||||
addToolArguments(valgrind);
|
||||
|
||||
m_runner.setValgrindCommand(valgrind);
|
||||
m_runner.setDebuggee(runControl()->runnable());
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "valgrindsettings.h"
|
||||
|
||||
#include <projectexplorer/runcontrol.h>
|
||||
#include <utils/environment.h>
|
||||
#include <valgrind/valgrindrunner.h>
|
||||
|
||||
#include <QFutureInterface>
|
||||
@@ -23,7 +22,7 @@ public:
|
||||
|
||||
protected:
|
||||
virtual QString progressTitle() const = 0;
|
||||
virtual QStringList toolArguments() const = 0;
|
||||
virtual void addToolArguments(Utils::CommandLine &cmd) const = 0;
|
||||
|
||||
ValgrindProjectSettings m_settings;
|
||||
QFutureInterface<void> m_progress;
|
||||
|
||||
Reference in New Issue
Block a user