wiki/HowtoLAMP/PHP/xdebug.md

1.6 KiB

Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.

Howto xdebug

# aptitude install php5-xdebug

Pour l'activer, dans /etc/php5/conf.d/xdebug.ini :

zend_extension=/usr/lib/php5/20090626/xdebug.so
xdebug.auto_trace=On
xdebug.profiler_enable=1
xdebug.profiler_output_dir=/home/xdebug
xdebug.trace_output_dir=/home/xdebug

Attention, bien mettre le bon chemin de l'extension zend (dépend de votre version PHP) et les droits sur le répertoire /home/xdebug. Notez qu'il peut se remplir très vite une fois activé !

On obtient des fichiers trace.XXX.xt et cachegrind.out.XXXX

Le fichier xt est une trace de tout les appels aux fonctions PHP du code préfixé par le temps d'exécution. Idéal pour trouver une fonction anormalement longue. La seconde colonne contient l'empreinte mémoire, idéal aussi pour répérer une fonction qui utilise trop de mémoire.

Le fichier cachegrind peuvent être lus avec l'outil kcachegrind (pour Linux) ou wincachegrind (sous Windows), cela permet de schématiser les appels aux fonctions PHP et de voir le temps passé en % et le nombre d'appels. Voici un exemple :

Image(call1.png)

Ici, 30% du temps est passé dans php::uasort, appelé par Mage_Core_Model_Layout->getOutput.

Webgrind

Webgrind en PHP permet de faire comme kcachegrind mais via un navigateur.

$ git clone <https://github.com/jokkedk/webgrind.git>

Puis dans le fichier de configuration config.php on mettre profilerDir à /home/xdebug. Il faut aussi installer le package graphviz et mettre dotExecutable à /usr/bin/dot si on veut profiter du graphique « call graph ».