Valgrind: подавление отчетов об утечке памяти, если программа потерпела крах - PullRequest
0 голосов
/ 28 ноября 2018

Предположим, у нас есть автоматическая настройка тестирования Valgrind с максимальной настройкой диагностики (--leak-check=yes --track-origins=yes и т. Д.). Однако в некоторых тестах процесс valgrinded может завершиться с SIGSEGV из-за некоторой недетерминированной ошибки.В этом случае полезна немедленная диагностика, ведущая к SIGSEGV, но Valgrind не останавливается на достигнутом и сбрасывает каждое выделение оперативной памяти как утечку, десятки тысяч из них - что бесполезно в случае случайного SIGSEGV.

Есть ли способ настроить Valgrind на

  • печатать любые ошибки во время выполнения программы и не прерывать;
  • при обычном выходе, сбрасывать утечки памяти;
  • при выходе SIGSEGV / SIGABRT / SIGILL / SIG ... не сбрасывать утечки памяти?

РЕДАКТИРОВАТЬ: это было зарегистрировано в системе отслеживания ошибок Valgrind в 2011 году: https://bugs.kde.org/show_bug.cgi?id=265371

1 Ответ

0 голосов
/ 30 ноября 2018

Поиск утечки valgrind не может быть активирован только для «нормальных выходов программы» и деактивирован для «аварийных выходов».

Вы можете получить этот результат, используя --vgdb-error = 0, затем (используя сценарий): используйте gdb + vgdb для подключения к gdbserver valgrind, перехватывайте нужные вам сигналы в gdb и заставляйте gdb уничтожать процесс при получении сигнала: в gdbserver valgrind есть команда v.kill, которая заставит valgrind завершитьсябез обычного поиска утечки в конце срока службы.

...