2015-04-18 5 views
0

Я запускаю valgrind в скрипте, чтобы найти проблемы с памятью только возвращаемым значением valgrind (я не хочу ничего печатать на экране). Использование этой строки: valgrind --tool=memcheck --leak-check=full --error-exitcode=3 {c program} < {input file} > /dev/null 2> {errors redirection file} Возвращаемое значение ($?), Которое я получаю, является возвращаемым значением c-программы, а не valgrind. Как я могу сделать это правильно?valgrind возвращает возвращаемое значение c-программы

Спасибо :)

ответ

0

Документация на сайте VALGRIND говорит:

«--error-ExitCode = [по умолчанию: 0]

Указывает альтернативный код выхода, чтобы вернуться, если Valgrind сообщили об ошибках в ноте. Когда установлено значение по умолчанию (ноль), возвращаемое значение из Valgrind всегда будет возвращаемым значением моделируемого процесса. Если установлено ненулевое значение, вместо этого возвращается значение , если Valgrind обнаруживает любые ошибки.Это полезно использовать Valgrind как часть автоматизации d, поскольку он позволяет легко обнаружить тестовые примеры, для которых Valgrind сообщил об ошибках, просто проверив коды возврата ».

Импликация заключается в том, что если valgrind не обнаружит ошибок, он все равно вернет значение моделируемого процесса. Поэтому вы должны выбрать некоторое значение для использования, которое программа C никогда не возвращает при использовании этой опции.

  1. http://valgrind.org/docs/manual/manual-core.html