2013-02-12 1 views
0

У меня есть программа на языке C, которая содержит много ресурсов памяти даже из внешних библиотек, и я хочу периодически проверять общую выделенную память моим приложением (включая выделение библиотек).Как сделать valgrind отображением статуса памяти для приложения daemon?

Я пробовал с некоторыми командами linux как ps euf, pmap $pid, cat /proc/$pid/status, но без реальных результатов.

Я делаю некоторые исследования, и я нашел подходящий инструмент todo, который с valgrind.

Я попытался сбросить память, когда мое приложение работает с:

valgrind --tool=drd --trace-alloc=yes 

Но я не получить результат, как результат, отображаемого Valgrind в конце исполнения.

Как заставить valgrind отображать состояние памяти (например, результат, отображаемый valgrind в конце выполнения), когда мое приложение запущено?

+3

valgrinds мощный инструмент, он может многое сделать. если вы используете дистрибутив Linux, вы можете использовать ** man valgrind ** и ** читать ** :). htop покажет вам общее использование памяти, практически и физически. – SeedmanJ

+0

Как заставить valgrind отображать состояние памяти периодически, а не в конце выполнения, потому что приложение является демоном. – developer

+0

Вы также можете ознакомиться с документацией вашей платформы, чтобы узнать, поддерживает ли 'malloc' какую-либо поддержку. Например, в GCC у вас есть «», который дает вам несколько диагностических инструментов. –

ответ

1

В соответствии с 3.8.0 valgrind manual такой опции для ядра или для memcheck нет, и не упоминается о периодическом или запущенном поведении в секции сигнала. valgrind не может этого сделать из коробки.

Хотя вы можете написать инструмент valgrind для выполнения задания, вы можете пересмотреть подход и уточнить, какое использование памяти вы хотите, и если системная статистика может быть достаточной для вашей задачи.

+0

Я вижу на странице man опцию 'valgrind -trace-alloc = yes', и это полезно, но с этой опцией я получаю ошибку при выполнении 'valgrind: Плохая опция: --trace-alloc = yes' – developer

+0

@alk: Нет, это просто специальный параметр DRD-инструмента, и он запускает инструмент по умолчанию (memcheck). – thiton