2010-11-12 3 views
4

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

Спасибо.

ответ

3

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

0

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

1) измерить размер шипа (предположим, что SPIKE = 1Gb)

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

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

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

+0

Хорошая идея, спасибо. – Sam

1

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

  • memprof
  • kmtrace
  • Valgrinds массива
+0

Спасибо за ссылку. – Sam

0

Чтобы получить функцию код размер использование:

nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g>