Login Logout

Howto Xdebug

Xdebug est un débogueur PHP.

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

Pour activer dans un vhost Apache :

php_admin_value xdebug.profiler_enable 1

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 ».