valgrind на серверном процессе - PullRequest
8 голосов
/ 22 марта 2010

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

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

Есть предложения?

спасибо, pigol

1 Ответ

5 голосов
/ 22 марта 2010

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

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

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

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

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

...