LINUX.ORG.RU

тулза для анализа использования памяти в c++ софтине


0

1

хай всем

нужна софтина вроде valgrind'овского massif, которая выкидывает в логи статистику использования памяти моей c++ прогой через определённые промежутки времени. так как прога активно пользует проц, massif, который очень медленный, использовать никак не получается (минут 5 только жду старта). да и без использования профайлера увидеть что прога скушала памяти больше чем нужно удаётся увидеть через несколько суток работы (для massif-а это несколько месяцев).

мне нужен только backtrace вызова функции выделения и кол-во памяти всего выделенное в этом месте.

подскажите плз, а то перепробовал с десяток - они или мультитред не поддерживают, или отладочные символы c++ или просто падают в корку по неясным причинам.


systemtap юзерспейс трейсить умеет. Сядь на функцию выделения памяти, печатай аргументы.

mv ★★★★★
()

А если заменить функции работы с памятью своими/перегрузить new+delete? И уже в них собирать статистику?

Deleted
()
Ответ на: комментарий от ioan

если этих функций много?

Сделай одну.

она бектрейс с пониманием отладочных символов умеет ?

Для чего? Для установки трапа на функцию, вызова обработчика и печати аргументов?

mv ★★★★★
()
Ответ на: комментарий от mv

одну функцию для выделения? софтина писана на c++, юзает new/delete, но юзает библиотеки которые сами выделяют память через malloc/free. без бектрейса я вообще не пойму откуда эта утекающая (или неосвобождаемая из за висящих гдето смартпоинтеров) память взялась.

ioan
() автор топика
Ответ на: комментарий от mv

можно накидать свой анализатор, но уйдёт неделя времени как минимум чтоб его отладить. неужто ни у кого не возникало таких потребностей?

ioan
() автор топика
Ответ на: комментарий от ioan

Так проверь, а что для бэктрейса нужны отладочные символы?

frey ★★
()

info gcc, search for __cyg_profile_func_enter

// www_linux_org_ru

anonymous
()

Используй google performance tools. В них входит библиотека tcmalloc, которая умеет периодически сбрасывать «профиль» памяти процесса, и улитита командной строки pprof, которая визуализирует этот профиль. И tcmalloc и pprof работают быстро.

iliyap ★★★★★
()
Ответ на: комментарий от ioan

эх блин.... google performance tools то что надо, но вылетает при старте в кору, внутри boost::asio. вылетает по эксепшену, не смотря что вызов обрамлён try{}catch(...){}. обычные простенькие программы отлаживает нормально.

ioan
() автор топика
Ответ на: комментарий от ioan

если точнее то вылетает из за чтения нулевого указателя в __cxa_allocate_exception. что за бред понять не могу.

ioan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.