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();
|
cleanupTempFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList CallgrindToolRunner::toolArguments() const
|
void CallgrindToolRunner::addToolArguments(CommandLine &cmd) const
|
||||||
{
|
{
|
||||||
QStringList arguments = {"--tool=callgrind"};
|
cmd << "--tool=callgrind";
|
||||||
|
|
||||||
if (m_settings.enableCacheSim())
|
if (m_settings.enableCacheSim())
|
||||||
arguments << "--cache-sim=yes";
|
cmd << "--cache-sim=yes";
|
||||||
|
|
||||||
if (m_settings.enableBranchSim())
|
if (m_settings.enableBranchSim())
|
||||||
arguments << "--branch-sim=yes";
|
cmd << "--branch-sim=yes";
|
||||||
|
|
||||||
if (m_settings.collectBusEvents())
|
if (m_settings.collectBusEvents())
|
||||||
arguments << "--collect-bus=yes";
|
cmd << "--collect-bus=yes";
|
||||||
|
|
||||||
if (m_settings.collectSystime())
|
if (m_settings.collectSystime())
|
||||||
arguments << "--collect-systime=yes";
|
cmd << "--collect-systime=yes";
|
||||||
|
|
||||||
if (m_markAsPaused)
|
if (m_markAsPaused)
|
||||||
arguments << "--instr-atstart=no";
|
cmd << "--instr-atstart=no";
|
||||||
|
|
||||||
// add extra arguments
|
// add extra arguments
|
||||||
if (!m_argumentForToggleCollect.isEmpty())
|
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());
|
cmd.addArgs(m_settings.callgrindArguments(), CommandLine::Raw);
|
||||||
|
|
||||||
return arguments;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CallgrindToolRunner::progressTitle() const
|
QString CallgrindToolRunner::progressTitle() const
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public:
|
|||||||
Q_ENUM(Option)
|
Q_ENUM(Option)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QStringList toolArguments() const override;
|
void addToolArguments(Utils::CommandLine &cmd) const override;
|
||||||
QString progressTitle() const override;
|
QString progressTitle() const override;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ signals:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QString progressTitle() const override;
|
QString progressTitle() const override;
|
||||||
QStringList toolArguments() const override;
|
void addToolArguments(CommandLine &cmd) const override;
|
||||||
|
|
||||||
void startDebugger(qint64 valgrindPid);
|
void startDebugger(qint64 valgrindPid);
|
||||||
void appendLog(const QByteArray &data);
|
void appendLog(const QByteArray &data);
|
||||||
@@ -181,15 +181,15 @@ void MemcheckToolRunner::stop()
|
|||||||
ValgrindToolRunner::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())
|
if (m_settings.trackOrigins())
|
||||||
arguments << "--track-origins=yes";
|
cmd << "--track-origins=yes";
|
||||||
|
|
||||||
if (m_settings.showReachable())
|
if (m_settings.showReachable())
|
||||||
arguments << "--show-reachable=yes";
|
cmd << "--show-reachable=yes";
|
||||||
|
|
||||||
QString leakCheckValue;
|
QString leakCheckValue;
|
||||||
switch (m_settings.leakCheckOnFinish()) {
|
switch (m_settings.leakCheckOnFinish()) {
|
||||||
@@ -204,19 +204,17 @@ QStringList MemcheckToolRunner::toolArguments() const
|
|||||||
leakCheckValue = "summary";
|
leakCheckValue = "summary";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
arguments << "--leak-check=" + leakCheckValue;
|
cmd << "--leak-check=" + leakCheckValue;
|
||||||
|
|
||||||
for (const FilePath &file : m_settings.suppressions())
|
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)
|
if (m_withGdb)
|
||||||
arguments << "--vgdb=yes" << "--vgdb-error=0";
|
cmd << "--vgdb=yes" << "--vgdb-error=0";
|
||||||
|
|
||||||
arguments << ProcessArgs::splitArgs(m_settings.memcheckArguments(), HostOsInfo::hostOs());
|
cmd.addArgs(m_settings.memcheckArguments(), CommandLine::Raw);
|
||||||
|
|
||||||
return arguments;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const FilePaths MemcheckToolRunner::suppressionFiles() const
|
const FilePaths MemcheckToolRunner::suppressionFiles() const
|
||||||
|
|||||||
@@ -74,9 +74,9 @@ void ValgrindToolRunner::start()
|
|||||||
m_progress.reportStarted();
|
m_progress.reportStarted();
|
||||||
|
|
||||||
CommandLine valgrind{valgrindExecutable};
|
CommandLine valgrind{valgrindExecutable};
|
||||||
valgrind.addArgs(m_settings.valgrindArguments.value(), CommandLine::Raw);
|
valgrind.addArgs(m_settings.valgrindArguments(), CommandLine::Raw);
|
||||||
valgrind.addArgs(genericToolArguments());
|
valgrind.addArgs(genericToolArguments());
|
||||||
valgrind.addArgs(toolArguments());
|
addToolArguments(valgrind);
|
||||||
|
|
||||||
m_runner.setValgrindCommand(valgrind);
|
m_runner.setValgrindCommand(valgrind);
|
||||||
m_runner.setDebuggee(runControl()->runnable());
|
m_runner.setDebuggee(runControl()->runnable());
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
#include "valgrindsettings.h"
|
#include "valgrindsettings.h"
|
||||||
|
|
||||||
#include <projectexplorer/runcontrol.h>
|
#include <projectexplorer/runcontrol.h>
|
||||||
#include <utils/environment.h>
|
|
||||||
#include <valgrind/valgrindrunner.h>
|
#include <valgrind/valgrindrunner.h>
|
||||||
|
|
||||||
#include <QFutureInterface>
|
#include <QFutureInterface>
|
||||||
@@ -23,7 +22,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QString progressTitle() const = 0;
|
virtual QString progressTitle() const = 0;
|
||||||
virtual QStringList toolArguments() const = 0;
|
virtual void addToolArguments(Utils::CommandLine &cmd) const = 0;
|
||||||
|
|
||||||
ValgrindProjectSettings m_settings;
|
ValgrindProjectSettings m_settings;
|
||||||
QFutureInterface<void> m_progress;
|
QFutureInterface<void> m_progress;
|
||||||
|
|||||||
Reference in New Issue
Block a user