valgrind на серверном процессе

привет я плохо знаком с valgrind. Я знаю, как выполнить valgrind на исполняемых файлах из командной строки. Но как Вы выполняете valgrind на серверных процессах как apache/myqld/traffic сервер и т.д.

Я хочу выполнить valgrind на транспортном сервере (http://incubator.apache.org/projects/trafficserver.html) для обнаружения некоторых утечек памяти, происходящих в плагине, который я записал.

Какие-либо предложения?

спасибо, pigol

8
задан Pigol 22 March 2010 в 10:27
поделиться

1 ответ

Вы должны запустить сервер под контролем Valgrind. Просто возьмите обычную команду запуска сервера и добавьте к ней valgrind .

Valgrind будет подключаться к каждому процессу, запускаемому вашим основным серверным процессом. Когда каждый поток или процесс завершается, Valgrind выводит свой анализ, поэтому я бы рекомендовал передать его по конвейеру в файл (не уверен, выходит ли он на stderr или stdout.)

Если ваша обычная команда запуска - / usr / local / mysql / bin / mysqld , вместо этого запустите сервер с помощью valgrind / usr / local / mysql / bin / mysqld .

Если вы обычно запускаете службу с помощью сценария (например, /etc/init.d/mysql start ), вам, вероятно, потребуется заглянуть внутрь сценария, чтобы найти фактическую команду, которую сценарий выполняет, и запустить это вместо сценария.

Не забудьте передать valgrind параметр - leak-check = full , чтобы получить отчет об утечке памяти.

5
ответ дан 5 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: