Программное включение Valgrind memcheck

Я не думаю, что есть способ программно включить / отключить проверку памяти Valgrind так, как вы можете с помощью callgrind? (Пуск/остановка приборов).

Это мучительно, непригодно для использования медленно (что нормально, если код, который вы хотите протестировать, запускается автоматически, и вы просто оставляете его работающим), но я не могу на самом деле получить код, который важен, не нажав несколько кнопок в приложении, которое отображается совершенно не отвечает. (Мой код является плагином для другого приложения)

Спасибо


person mr grumpy    schedule 29.11.2009    source источник


Ответы (2)


Это практически невозможно в принципе. Если valgrind не знает полной истории всей вашей памяти, как он может знать наверняка, что что-то является утечкой или даже ссылкой на недопустимую память?

person bmargulies    schedule 29.11.2009

Вы не можете останавливать/запускать контрольно-измерительные приборы, но вы можете программно выполнять добавочные проверки на утечку. См. http://valgrind.org/docs/manual/mc-manual.html#mc-manual.clientreqs и, в частности, VALGRIND_DO_LEAK_CHECK, VALGRIND_DO_ADDED_LEAK_CHECK и VALGRIND_DO_CHANGED_LEAK_CHECK.

person J.Churchill    schedule 29.11.2013
comment
А также клиентские запросы VALGRIND_DISABLE_ERROR_REPORTING и VALGRIND_ENABLE_ERROR_REPORTING, которые удобны для фильтрации вещей, которые, как вы знаете, не представляют интереса в массовом порядке. Если вас интересует медленная утечка в долго работающем приложении, вы можете запустить, отключить отчеты, выполнить первоначальную проверку на утечку, повторно включить отчетность и выполнить дополнительные проверки на утечку, чтобы увидеть, о чем сообщается. Особенно полезно, если вы выполняете reachable проверку. - person Craig Ringer; 19.02.2018