2010-03-22 4 views
7

안녕하세요 저는 valgrind를 처음 사용하고 있습니다. 명령 줄에서 실행 파일에 valgrind를 실행하는 방법을 알고 있습니다. 하지만 apache/myqld/traffic 서버 등과 같은 서버 프로세스에서 valgrind를 어떻게 실행합니까?서버 프로세스의 valgrind

트래픽 서버 (http://incubator.apache.org/projects/trafficserver.html)에서 valgrind를 실행하여 필자가 작성한 플러그인에서 발생하는 일부 메모리 누수를 감지하려고합니다.

제안 사항?

덕분에, pigol

답변

5

당신은 Valgrind의의 통제 서버를 시작해야합니다. 단순히 서버의 정상적인 시작 명령을 취하고 그 앞에 valgrind을 붙이십시오.

Valgrind는 모든 프로세스에 기본 "서버"프로세스가 생성되도록 연결합니다. 각 스레드 또는 프로세스가 끝나면 Valgrind는 분석 결과를 출력하므로 파일을 표준 출력으로 내보내는 것이 좋습니다 (표준 오류 또는 표준 출력에서 ​​출력되는지 확실하지 않음).

일반적인 시작 명령이 /usr/local/mysql/bin/mysqld 인 경우 서버 대신 valgrind /usr/local/mysql/bin/mysqld.

일반적으로 스크립트 (예 : /etc/init.d/mysql start)로 서비스를 시작하는 경우 스크립트가 실행하는 실제 명령에 대한 스크립트를 살펴보고 스크립트 대신 해당 스크립트를 실행해야합니다.

메모리 누수 보고서를 받으려면 valgrind에 --leak-check=full 옵션을 전달해야합니다.