2010-03-22 7 views
7

salut je suis nouveau à valgrind. Je sais comment exécuter valgrind sur les fichiers exécutables à partir de la ligne de commande. Mais comment exécuter valgrind sur les processus serveur comme apache/myqld/traffic server etc.valgrind sur le processus serveur

Je veux exécuter valgrind sur le serveur de trafic (http://incubator.apache.org/projects/trafficserver.html) pour détecter des fuites de mémoire qui se produisent dans le plugin que j'ai écrit.

Des suggestions?

grâce, pigol

Répondre

5

Vous devez démarrer le serveur sous le contrôle de Valgrind. Prenez simplement la commande de démarrage normale du serveur et ajoutez-la au valgrind.

Valgrind se joindre à tous les processus de vos principaux fraye processus « serveur ». Lorsque chaque thread ou processus se termine, Valgrind sortira son analyse, donc je recommanderais de le rediriger vers un fichier (je ne sais pas s'il sort sur stderr ou stdout.)

Si votre commande de démarrage habituelle est /usr/local/mysql/bin/mysqld, démarrez le serveur à la place avec valgrind /usr/local/mysql/bin/mysqld.

Si vous démarrez généralement le service avec un script (comme /etc/init.d/mysql start), vous devrez probablement chercher dans le script la commande réelle exécutée par le script et l'exécuter à la place du script.

Ne pas oublier de passer l'option --leak-check=full à valgrind pour obtenir le rapport de fuite de mémoire.