Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

valgrind on server process

hi i am new to valgrind. I know how to run valgrind on executable files from command line. But how do you run valgrind on server processes like apache/myqld/traffic server etc ..

I want to run valgrind on traffic server (http://incubator.apache.org/projects/trafficserver.html) to detect some memory leaks taking place in the plugin I have written.

Any suggestions ?

thanks, pigol

like image 396
Pigol Avatar asked Mar 22 '10 10:03

Pigol


1 Answers

You have to start the server under Valgrind's control. Simply take the server's normal start command, and prepend it with valgrind.

Valgrind will attach to every process your main "server" process spawns. When each thread or process ends, Valgrind will output its analysis, so I'd recommend piping that to a file (not sure if it comes out on stderr or stdout.)

If your usual start command is /usr/local/mysql/bin/mysqld, start the server instead with valgrind /usr/local/mysql/bin/mysqld.

If you usually start the service with a script (like /etc/init.d/mysql start) you'll probably need to look inside the script for the actual command the script executes, and run that instead of the script.

Don't forget to pass the --leak-check=full option to valgrind to get the memory leak report.

like image 69
Andy Shellam Avatar answered Sep 18 '22 11:09

Andy Shellam