Название: Как найти маленькую утечеку ??? Отправлено: alex12 от Сентябрь 01, 2009, 15:41 Программа очень интенсивно обновляет значения в большом количестве ячеек QTableWidget. Внутренний алгоритм большой и довольно сложный.
Происходит утечка памяти примерно 1 MB в час. Какие есть способы засечь причину, корме детального копания в коде? Какими инструментами можно воспользоваться для MingGW или Linux? Название: Re: Как найти маленькую утечеку ??? Отправлено: Rcus от Сентябрь 01, 2009, 15:49 То есть вы поискали по форуму и отвергли все инструменты которые предлагались тех случаях? А чем ваш особенный и чем не угодил тот же Valgrind?
Название: Re: Как найти маленькую утечеку ??? Отправлено: alex12 от Сентябрь 01, 2009, 16:07 За Valgrind - спасибо. Разбираюсь.
Название: Re: Как найти маленькую утечеку ??? Отправлено: alex12 от Сентябрь 01, 2009, 16:34 Valgrind дает кучу ошибок внутри Qt, а откуда утечка совершенно непонятно. :(
Название: Re: Как найти маленькую утечеку ??? Отправлено: Rcus от Сентябрь 01, 2009, 16:41 Еще один... что у вас за версия Qt и Valgrind и опции запуска, может покажете лог? Может у нас разные представления о куче, но мне достаточно просто было отсеять ложные срабатывания от утечек памяти.
Название: Re: Как найти маленькую утечеку ??? Отправлено: alex12 от Сентябрь 01, 2009, 17:05 Тестовая Linux машина у меня несколько устарела.
OpenSUSE 11.1 gcc 4.3.1 Qt 4.4.3 valgrind-3.3.0 Запускаю так: valgrind --leak-check=full --show-reachable=yes ./mkstudio log: http://transmeta.inkommet.ru/~alex/log.txt Название: Re: Как найти маленькую утечеку ??? Отправлено: Rcus от Сентябрь 01, 2009, 17:10 ну и ни одного срабатывания, в таком случае надо запустить на пару часиков под massif и потом разбирать деревья аллокаций :)
Название: Re: Как найти маленькую утечеку ??? Отправлено: alex12 от Сентябрь 01, 2009, 17:16 Большое спасибо. Буду разбираться. А есть ли способ не выводить в лог ложные срабатывания и откуда они вообще беруться?
Название: Re: Как найти маленькую утечеку ??? Отправлено: Rcus от Сентябрь 01, 2009, 17:26 Насколько я знаю это просто глобальные объекты, освобождать которые нет смысла (они не захватывают системные ресурсы, а память и так возвращается полностью).
Еще можно не использовать show-reachable, по крайней мере мне эта опция не помогает (основные проблемы это либо утечки на чистых указателях, выявляемые memcheck'ом, либо неконтроллируемое заполнение контейнеров - выявляется massif'ом) Название: Re: Как найти маленькую утечеку ??? Отправлено: crackedmind от Сентябрь 01, 2009, 17:56 Попробуй --gen-suppressions=yes
Название: Re: Как найти маленькую утечеку ??? Отправлено: uriel от Сентябрь 02, 2009, 06:55 Делал для себя подобный велосипед. :)
http://www.prog.org.ru/topic_10260_0.html |