Поиск утечек памяти с помощью valgrind
Bodro 10 Августа, 2010 - 17:56
Добрый день!
Возможно ли с помощью valgrind обнаружить утечки памяти в демоне и во всех дочерних процессах, которые создал демон в процессе работы?
Если да, то как.
Если нет, то чем можно?
»
- Для комментирования войдите или зарегистрируйтесь
в мане valgrind --trace-children
в мане valgrind
--trace-children
хотя лично я бы отделил одну задачу от другой, несколько разных приложения - демон и дочерние процессы, какой смысл искать утечки во всех одновременно?
Возможно я не так
Возможно я не так объяснил.
Пишу демон. Демон очень большой и сложный. В процессе его работы часто создаются дочерние процессы. В общем, ветвлений полно! И надо отследить, есть ли утечки памяти. От начала работы демона до завершения всех дочерних процессов, даже в случае осеротения.
valgrind --trace-children
Эта команда поможет решить задачу такую? Или есть какие-то ещё способы поимки мемликов, специальные для демонов?
Просто с valgrind-ом опыт работы небольшой. До этого успешно обходился без него или с ним, но в самом простом варианте.
Да, это поможет вам в этой
Да, это поможет вам в этой задаче. Демон от обычной программы ничем принципиально не отличается.
Если вы хотите проверить есть ли утечки в принципе, тогда понятно, если вы знаете что утечки есть, и нужно найти где именно, а дочерние процессы это отдельные программы, то проще их по отдельности трейсить имхо.
Долго будет
Valgrind плохо себя ведёт с многопоточными/паралельными приложениями (проверял). Точнее ОЧЕНЬ медленно :)
Если демон большой то есть смысл написать свой memory tracker для отлаживаемой версии - есть шансы что с сабжем тупо нельзя будет ничего сделать. Из моего опыта: в игре 1 кадр рендерился 2-4 секунды (всего 3 потока: физика+ звук, 3Д + менеджмент сцены, АИ), хотя без него на кадр уходило 15мсек (26мсек в случае собственного трекера). Да, он подходит для чего-то вроде "запустил, пошел пить чай", но, скажем, к большим интерактивным прогам... ну я не думаю:)