summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2023-05-16 11:19:31 +0200
committerChristian Stenger <christian.stenger@qt.io>2023-05-17 08:17:19 +0000
commitdb2b09f4ebc20d8a8f624cdc32de130e8030b780 (patch)
tree80fe85fc75d60b14c30fbb8fa0819b93a49a17d0 /src
parent796cfceb3a27337e2f613624a8c223761fdd44b8 (diff)
downloadqt-creator-db2b09f4ebc20d8a8f624cdc32de130e8030b780.tar.gz
Valgrind: Do not start valgrind if it does not exist
...and print a warning with some user hint inside the application output instead. Drive-by fix: silence a soft assert in case of a failed start of callgrind. Fixes: QTCREATORBUG-28988 Change-Id: I4fd0253e1f18489031e2f6cfa276c4df5ea4483a Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/valgrind/callgrindengine.cpp3
-rw-r--r--src/plugins/valgrind/memchecktool.cpp1
-rw-r--r--src/plugins/valgrind/valgrindengine.cpp23
3 files changed, 12 insertions, 15 deletions
diff --git a/src/plugins/valgrind/callgrindengine.cpp b/src/plugins/valgrind/callgrindengine.cpp
index 99d948c248..e8ddb08fac 100644
--- a/src/plugins/valgrind/callgrindengine.cpp
+++ b/src/plugins/valgrind/callgrindengine.cpp
@@ -258,7 +258,8 @@ void CallgrindToolRunner::triggerParse()
}
const auto afterCopy = [this](expected_str<void> res) {
- QTC_ASSERT_EXPECTED(res, return);
+ if (!res) // failed to run callgrind
+ return;
showStatusMessage(Tr::tr("Parsing Profile Data..."));
m_parser.parse(m_hostOutputFile);
};
diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp
index 8b842ec080..552d5a2823 100644
--- a/src/plugins/valgrind/memchecktool.cpp
+++ b/src/plugins/valgrind/memchecktool.cpp
@@ -7,7 +7,6 @@
#include "valgrindengine.h"
#include "valgrindrunner.h"
#include "valgrindsettings.h"
-#include "valgrindsettings.h"
#include "valgrindtr.h"
#include "xmlprotocol/error.h"
diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp
index 977ca79775..462d1b1a73 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;
@@ -55,6 +53,16 @@ ValgrindToolRunner::ValgrindToolRunner(RunControl *runControl)
void ValgrindToolRunner::start()
{
+ FilePath valgrindExecutable = m_settings.valgrindExecutable.filePath();
+ if (IDevice::ConstPtr dev = DeviceKitAspect::device(runControl()->kit()))
+ valgrindExecutable = dev->filePath(valgrindExecutable.path());
+ if (!valgrindExecutable.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);
@@ -62,17 +70,6 @@ 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(genericToolArguments());