Qu’est ce que xdebug ?
xdebug est une extension php écrite en c.
Elle permet, entre autre :
- d’afficher la pile d’exécution lors d’une fatal error.
- d’afficher des informations de profiling (mesure des temps d’exécution dans les fonctions)
- d’afficher la couverture de code, c’est à dire la proportion de code utilisé lors d’une exécution. Cela est très utile pour voir si nos tests unitaires couvrent la totalité du code.
si vous n’avez pas xdebug d’installé, reportez vous ici
Configuration de xdebug sous eclipse
Nous allons maintenant utiliser xdebug pour déboguer notre programme php, nous voulons exécuter notre programme, à partir du navigateur web, et en mode pas à pas.
Sous eclipse, nous allons procéder comme suit :
Dirigez vous dans le menu Window -> Préferences, dans le menu PHP -> PHP Servers
Créez-vous un nouveau serveur, dans les propriétés :
- le Base Url doit corresponde à l’url racine de votre site, par exemple http://localhost/monsite
- le Local Web Root correspond à la racine de votre projet.
Cliquez droit sur votre projet eclipse,
dans le menu, allez dans Debug as, puis Debug configuration, on se retrouve avec l’image suivante :
Il va falloir nous créer une configuration pour ce projet, pour cela, cliquez droit sur PHP Web Application, et faites New.
- Selectionnez votre PHP Server créé auparavant (qui correspond à votre projet eclipse)
- Selectionnez, dans File, le chemin relatif à votre workspace eclipse jusqu’à votre fichier php executé.
- Ecrivez ensuite votre Url, la première partie correspond à l’url du server, la seconde est l’URI qui va être lancée dans le navigateur pour déboguer notre programme.
Faites un Apply, puis un Run lancera l’url dans votre navigateur par défaut.
Déboguer un code php
Nous avons maintenant configuré notre projet eclipse pour xdebug.
Plaçons un breakpoint sur la première ligne de notre programme: pour ceci, dans votre fichier php, cliquez droit sur le bord de la fenêtre contenant votre code (là ou se trouvent les numéros de ligne) et faites un ‘Toggle Breakpoints’.
Maintenant, à chaque fois que votre programme rencontrera cette ligne, il se mettra en pause et nous pourrons alors déboguer.
On peut alors cliquer droit sur notre index.php (fichier indiqué dans le Debug Configuration) et faire un Debug as -> New_Configuration. Si tout va bien, on arrive sur la perspective de Debug :
On observe que notre programme s’est effectivement arrête sur notre ligne ou nous avons placé notre beakpoint.
Dans cette perspective de Debug, on note en haut à gauche la pile d’exécution, à noter que l’on peut cliquer sur nimportequel élément de la pile pour ouvrir le fichier et la ligne correspondante.
en haut à gauche se trouve toutes les variables globales et déclarées dans l’endroit ou nous nous sommes arreté.
Il est maintenant possible de faire du pas à pas, quelques raccourcis (disponible dans la toolbar d’eclipse ) :
F6 permet de continuer l’exécution, en allant à la ligne suivante, observez alors les variables changer de valeur dynamiquement dans la vue Variables
F5 permet de continuer l’exécution, la différence avec F6 est que, lorsque nous rencontrons des appels de fonctions, nous allons directement à intérieur de celle-ci (nous empilons un appel de fonction)
F7 permet de dépiler de la fonction, le programme continue alors jusqu’à rencontrer le retour de la fonction avant de se remettre en pause.
F8 permet de continuer l’exécution, si vous avez défini d’autres breakpoints, le programme s’arettera de nouveau sur ceux-ci.