У меня есть скрипт bash, который должен определить, была ли Хелгринд выдана какая-либо ошибка.Я попытался использовать следующее:
thread_race=$(valgrind --error-exitcode=10 --tool=helgrind ./$2.out $3; echo $?)
$ 2 - это файл .cpp, а $ 3 - аргумент.Однако это не работает, потому что на самом деле это не меняет код завершения.
Я бы ожидал, что thread race
будет 10, если обнаружатся какие-либо ошибки, и что-то еще в противном случае.
Есть ли способ узнать, обнаружил ли helgrind какие-либо ошибки вообще, и затем сохранить ответ?Я использую Ubuntu Linux с Clang ++.
EDIT: В обоих случаях, когда helgrind обнаруживает ошибку и не обнаруживает ошибку, thread_race
возвращает 134.
У меня есть похожий тест без helgrind, который отлично работает;
leak=$(valgrind --leak-check=full --error-exitcode=55 ./$2.out $3 >/dev/null; echo $?)
Это приведет к изменению кода выхода на 55 при появлении ошибки.Я был уведомлен, что --leak-check = full необходим для правильных кодов выхода, использование которых приводит к большему количеству ошибок при использовании helgrind:
thread_race=$(valgrind --leak-check=full --error-exitcode=10 --tool=helgrind ./$2.out $3; echo $?)
output
valgrind: Unknown option: --leak-check=full
и thread_race= 1