Профилирование памяти
От: VTT http://vtt.to
Дата: 09.02.15 10:58
Оценка:
В последнее время назрела необходимость осуществлять профилирование памяти на предмет выявления наиболее прожорливых участков кода. Хотелось бы найти инструмент, который показывал бы граф вызовов функций по управлению памятью. Причем интересует не столько выделение памяти из кучи, сколько работа с memory-mapped файлами и COM. Беглый поиск показал, что большая часть утилит класса memory debugger заточены прежде всего на поиск утечек и проблем с некорректным доступом (что не удивительно). Более-менее подходящих к моим задачам удалось найти только две:

AQtime Pro ~600$
Прежде всего ориентирован на нахождение утечек. Есть возможность отображать stack trace для создания объектов из кучи. Заявляют о поддержке множества языков и сред, включая MS VS и RAD Studio. Видео работы этого софта как-то не впечатлили, особенно перекос в сторону не интересующего меня RAD Studio (хотя это может мне неудачные видео попались). Демо скачать не удалось, сначала пришлось заполнить 100500 полей в форме, а затем 403 ошибка после всех трудов...

Memory Validator ~750$
В общем-то тоже ориентирован на нахождение утечек и т.п. Но прямо на первом же скриншоте показывают граф вызовов выделения памяти — как раз то, что надо. После регистрации на сайте удалось скачать демо. Интеграции с VS нет, интерфейс программы несколько странный, однако сбор статистики по памяти и граф по выделению памяти из кучи строится без проблем. Из полезных функций также есть возможность просматривать использование страниц виртуальной памяти, включая адреса хранящихся в них объектов — более подробно в сравнении с Virtual Memory Map. Но вот главного — профилирования работы с memory-mapped файлами и COM нет. Принцип сбора статистики по памяти явно аналогичен утилите Visual Leak Detector (для профилирования памяти в этой программе надо собрать версию приложения с отключенным VLD).

В общем получается, что, по сравнению с различными бесплатными инструментами, утилиты за 50000 руб. готовы предложить только рисование графов аллокаций из кучи. Инструментов для работы с COM (допустим отслеживание вызовов CoTaskMemAlloc, CoCreateInstance) и системными функциями по работе с виртуальной памятью и memory-mapped файлами вообще не видно. Если кому-нибудь такие инструменты известны — большая просьба поделиться.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
memory debugger профилирование памяти с с++ winapi
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.