привет я плохо знаком с valgrind. Я знаю, как выполнить valgrind на исполняемых файлах из командной строки. Но как Вы выполняете valgrind на серверных процессах как apache/myqld/traffic сервер и т.д.
Я хочу выполнить valgrind на транспортном сервере (http://incubator.apache.org/projects/trafficserver.html) для обнаружения некоторых утечек памяти, происходящих в плагине, который я записал.
Какие-либо предложения?
спасибо, pigol
Вы должны запустить сервер под контролем 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
, чтобы получить отчет об утечке памяти.