Installer xdebug et KCachegrind sous Leopard

Cet article fait suite au deux premiers écrits au sujet de l’installation de PHP5 et MySQL5 sous Léopard.

L’idée est de faire du profiling d’application PHP en utilisant xdebug et KCachegrind.

Installation de xdebug

Si vous avez correctement installé PHP aucun problème pour xdebug :
# sudo pecl install xdebug

Ajouter « zend_extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so »
à la fin du fichier php.ini suffira à activer l’extension. (attention, le chemin de xdebug.so peut être un peu différent mais il sera sous /usr/local/php5/lib/).

Vous pouvez d’ores et déjà utiliser xdebug comme décrit dans cet article chez Zend. Avec symfony, les traces de xdebug seront automagiquement intégrées dans les infos de débogages.

debogage symfony xdebug

installation de KCachegrind avec fink

Xdebug va permettre de faire du profiling d’application PHP. Mais afin d’exploiter les résultats obtenus, il nous faut un logiciel bien spécifique faisant partie de KDE : KCachegrind.

Pour installer KCachegrind, il faut d’abord installer fink (qui, par ailleurs vous permettra d’installer plein de logiciels open-source disponibles sous Linux). Le projet fink fournit un installeur qui fonctionne tout seul.

Pour le faire fonctionner avec le shell que j’utilise (bash, qui n’est pas le shell par défaut sous osx) j’ai dû ajouter cette ligne dans le fichier .profile à la racine de mon compte utilisateur :

. /sw/bin/init.csh

KCachegrind n’est pas disponible dans la version stable des paquets fournis, il faut passer en unstable.

Pour cela, il faut éditer le fichier /sw/etc/fink.conf et remplacer la ligne commençant par ‘Trees:’ par :

Trees: local/main stable/main stable/crypto unstable/crypto unstable/main

Il faut ensuite mettre à jour la base locale de fink en tapant les commandes suivantes :

# sudo fink selfupdate
# sudo fink index
# sudo fink scanpackages

La commande selfupdate va durer un certain temps et sollicitera votre connexion internet. Le programme vous posera des questions sur les miroirs à utiliser, si cela ne vous parle pas, choisissez les options par défaut.

Il faut enfin lancer l’installation de KCachegrind via la commande :

sudo apt-get install kcachegrind

Vous verrez apparaitre un message de ce type :

The following package will be installed or updated:
kcachegrind
The following 164 additional packages will be installed:
....

Ici, vous pouvez allez vous coucher et revenir le lendemain … il y en a en général pour plusieurs heures (il faut télécharger KDE notamment).

Et voila, vous pouvez maintenant lancer KCachegrind depuis le terminal (celui-ci ouvrira X11 automatiquement) :

# kcachegrind

installation de KCachegrind via les binaires de KDE

Une distribution complète de KDE4 pour mac os x est disponible ici. Le plus simple est de télécharger le torrent everything. Un peu de patience et beaucoup de place sur votre disque dur sont également nécessaires pour cette phase.

Une fois l’image téléchargée, montez la et lancer l’installeur kde.mpkg

Il va installer la base de KDE ainsi qu’une version de QT compilée pour os x puis l’ensemble de KDE.

Pour lancer KCachegring il faut aller chercher le .app dans /opt/kde4/bin ce que vous pouvez faire depuis le finder en tapant ce chemin après le raccourci clavier Pomme+Shift+V.

Et voilà !

Personnellement je préfère cette dernière méthode car elle permet de se passer de X11. Par contre, le paquet est un peu instable (il plante parfois aléatoirement sur l’ouverture des fichiers). Il faudra retourner sur la page du mainteneur pour obtenir les mises à jour.

Le seul souci restant est que KCachegrind ne trouve pas l’utilitaire dot pour générer les graphiques d’appels. Pour remédier à cela, si vous avez fink, il y a une solution (un peu rapide certes) :

# sudo apt-get install graphviz
# cd /bin
# sudo ln -s /sw/bin/dot .

paramétrage de xdebug

L’objectif est de paramétrer xdebug pour qu’à chaque page php demandée, il produise une trace permettant de faire notre profiling.

Il faut tout simplement ajouter les lignes suivantes à la fin du php.ini :

xdebug.profiler_enable=1
xdebug.profiler_output_dir=
/Users/olivier/tmp

et bien sur créer le répertoire /Users/olivier/tmp

# mkdir /Users/olivier/tmp
# chmod 777 /
Users/olivier/tmp

A chaque hit sur votre serveur, un fichier sera crée dans ce répertoire. Vous pourrez l’ouvrir avec KCachegrind.

Un futur article expliquera comment exploiter les résultats obtenus et parlera de profiling d’applications php en général.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s