wiki/HowtoLAMP/PHP/xdebug.md

42 lines
1.6 KiB
Markdown

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