Требуется инструмент использования памяти для функции C ++ в Linux - PullRequest
4 голосов
/ 12 ноября 2010

Я ищу отладчик оперативной памяти, способный показать использование памяти (а не только утечки) для каждой функции или строки кода C ++ в Linux.Я пытаюсь отследить скачок в использовании памяти моей программы.Я использовал Valgrind и Purify и обнаружил, что утечек нет.Я ожидал, что, как и после этого скачка, использование памяти вернется к ожидаемому уровню для моей программы.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 12 ноября 2010

Вы можете использовать инструмент массива из набора инструментов valgrind.

1 голос
/ 12 ноября 2010

Раздел "Анализ памяти приложения" в Анализ использования памяти дает хороший обзор и указывает на:

  • memprof
  • kmtrace
  • Массив Вальгриндс
0 голосов
/ 15 августа 2013

Для получения функции код размер использования:

nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g> 
0 голосов
/ 12 ноября 2010

Я использовал valgrind несколько раз в прошлом, но если вы хотите узнать, где происходит всплеск, я бы использовал следующий хак:

1) измерим размер всплеска (предположим,SPIKE = 1 ГБ)

2) (при условии, что ваш общий объем памяти равен 4 ГБ), запустите другой пользовательский процесс, который будет выделять ровно 3 ГБ + 1 байт, и подождите, пока вы не нажмете клавишу.Оставьте это в ожидании

3) запустите код приложения и посмотрите, где произойдет сбой распределения памяти.Так как ваша доступная память теперь немного меньше, чем ваш SPIKE, когда всплеск произойдет, он не сможет выделить запрошенную память

надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...