diff options
Diffstat (limited to 'src/plugins/valgrind/valgrindengine.cpp')
-rw-r--r-- | src/plugins/valgrind/valgrindengine.cpp | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp index 58919333f17..a228eb0e09a 100644 --- a/src/plugins/valgrind/valgrindengine.cpp +++ b/src/plugins/valgrind/valgrindengine.cpp @@ -22,8 +22,6 @@ #include <QApplication> -#define VALGRIND_DEBUG_OUTPUT 0 - using namespace Debugger; using namespace Core; using namespace Utils; @@ -39,8 +37,10 @@ ValgrindToolRunner::ValgrindToolRunner(RunControl *runControl) m_settings.fromMap(runControl->settingsData(ANALYZER_VALGRIND_SETTINGS)); - connect(&m_runner, &ValgrindRunner::appendMessage, - this, &ValgrindToolRunner::appendMessage); + connect(&m_runner, + &ValgrindRunner::appendMessage, + this, + [this](const QString &msg, Utils::OutputFormat format) { appendMessage(msg, format); }); connect(&m_runner, &ValgrindRunner::valgrindExecuted, this, [this](const QString &commandLine) { appendMessage(commandLine, NormalMessageFormat); @@ -53,6 +53,19 @@ ValgrindToolRunner::ValgrindToolRunner(RunControl *runControl) void ValgrindToolRunner::start() { + FilePath valgrindExecutable = m_settings.valgrindExecutable(); + if (IDevice::ConstPtr dev = DeviceKitAspect::device(runControl()->kit())) + valgrindExecutable = dev->filePath(valgrindExecutable.path()); + + const FilePath found = valgrindExecutable.searchInPath(); + + if (!found.isExecutableFile()) { + reportFailure(Tr::tr("Valgrind executable \"%1\" not found or not executable.\n" + "Check settings or ensure valgrind is installed and available in PATH.") + .arg(valgrindExecutable.toUserOutput())); + return; + } + FutureProgress *fp = ProgressManager::addTimedTask(m_progress, progressTitle(), "valgrind", 100); connect(fp, &FutureProgress::canceled, this, &ValgrindToolRunner::handleProgressCanceled); @@ -60,21 +73,10 @@ void ValgrindToolRunner::start() this, &ValgrindToolRunner::handleProgressFinished); m_progress.reportStarted(); -#if VALGRIND_DEBUG_OUTPUT - emit outputReceived(Tr::tr("Valgrind options: %1").arg(toolArguments().join(' ')), LogMessageFormat); - emit outputReceived(Tr::tr("Working directory: %1").arg(runnable().workingDirectory), LogMessageFormat); - emit outputReceived(Tr::tr("Command line arguments: %1").arg(runnable().debuggeeArgs), LogMessageFormat); -#endif - - - FilePath valgrindExecutable = m_settings.valgrindExecutable.filePath(); - if (IDevice::ConstPtr dev = DeviceKitAspect::device(runControl()->kit())) - valgrindExecutable = dev->filePath(valgrindExecutable.path()); - 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()); |