diff options
author | Christian Stenger <christian.stenger@qt.io> | 2023-05-16 11:19:31 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2023-05-17 08:17:19 +0000 |
commit | db2b09f4ebc20d8a8f624cdc32de130e8030b780 (patch) | |
tree | 80fe85fc75d60b14c30fbb8fa0819b93a49a17d0 /src | |
parent | 796cfceb3a27337e2f613624a8c223761fdd44b8 (diff) | |
download | qt-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.cpp | 3 | ||||
-rw-r--r-- | src/plugins/valgrind/memchecktool.cpp | 1 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindengine.cpp | 23 |
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()); |