10.Déboguer une application PHP
10.6.pugdebug
10.6.1.Introduction
Parmi les outils pouvant être utilisés en combinaison avec Xdebug pour faire du débogage pas à pas d'un script PHP, nous trouvons pugdebug.
Pugdebug n'est pas un outil très avancé et il ne s'agit pas d'un éditeur mais parce qu'il est simple d'installation (et de configuration) il va nous permettre de valider la bonne installation et configuration de Xdebug avant de passer à un débogage pas à pas avec un outil/éditeur plus évolué comme eclipse.
10.6.2.Installation
Il suffit alors de décompresser l'archive récupérée dans le dossier de votre choix et exécuter le script principal pugdebug (après éventuellement avoir modifié les droits pour qu'il soit exécutable sous linux) pour lancer l'application
10.6.3.Utilisation
10.6.3.1.Lancement de pugdebug
En action voici ce que cela donne
Nous avons:
- A gauche une vue sur les fichiers du projet
- Au centre, le où les fichiers ouverts, avec les éventuels marqueurs de points d'arrêt (breakpoint)
- A droite, les valeurs des variables en jeu et éventuellement les résultats d'expressions que l'on souhaite évaluer
- En bas, la liste des points d'arrêt et la pile d'exécution
|
Autant dire, que nous avons déjà pas mal d'éléments pour travailler.
Mais pour en arriver là, il faut, après avoir lancé l'exécutable
pugdebug, définir les paramètres du projet via le menu
Fichier/Settings (ou new Project au choix).
Pour mieux nous y retrouver nous indiquerons dans le champ Root le chemin vers le dossier du projet PHP.
Nous vérifierons que les valeurs définies pour
Host et
Port correspondent bien à celles définies dans Xdebug
[en savoir plus] (via
xdebug.remote_host et
xdebug.remote_port). A défaut, dans le cas d'un script en ligne de commande, il sera toujours possible de les modifier au moment du lancement du script (voir ci-après).
Enfin, nous noterons (et modifierons si besoin) la valeur indiquée dans le champ IDE Key.
10.6.3.2.Lancement du débogage
Avant même de lancer le script ou le serveur PHP, vous pouvez mettre pugdebug en attente d'informations en provenance de Xdebug. Pour cela, vous devez, cliquer sur le bouton "Start listening".
10.6.3.3.Avant de lancer le script ou serveur PHP
Pour pouvoir effectuer un débogage pas à pas, il convient de:
- S'assurer que l'extension Xdebug a bien été installée et déclarée (ajout d'une ligne de la forme zend_extension=/chemin/vers/xdebug.so) au niveau du php.ini[en savoir plus]
- S'assurer que le debogage distant a bien été activé au niveau du php.ini[en savoir plus]
|
10.6.3.4.Lancement du script PHP (cas ligne de commande)
Une fois Xdebug correctement configuré, vous pourrez, en ligne de commande taper
export XDEBUG_CONFIG="idekey=pugdebug"
php monscript.php
où "pugdebug" est la valeur précédemmment renseignée en tant que
IDE Key dans la configuration de pugdebug et
monscript.php est le script à lancer.
Si par hasard pugdebug écoute sur une IP ou un port différent de celui défini pour Xdebug dans
php.ini et que vous ne souhaitez modifier ni la configuration de pugdebug ni celle de Xdebug, vous pouvez utiliser une IP ou un port alternatif en l'indiquant dans la variable d'environnement
XDEBUG_CONFIG.
export XDEBUG_CONFIG="idekey=pugdebug remote_host=127.0.0.1 remote_port=9000"
php monscript.php
10.6.3.5.Lancement du serveur PHP (cas site web)
Pour débogger un site web écrit en PHP, avec Xdebug correctement configuré (Cf. au dessus), il suffit d'ajouter à l'URL appelée (typiquement le point d'entrée du site web mais cela peut se faire à tout moment) un paramètre GET ayant pour nom XDEBUG_SESSION_START et pour valeur celle saisie dans la configuration de pugdebug dans le champ IDE key. Ainsi plutot que d'appeler http://mondomaine.com (resp http://mondomaine.com/monscript.php ou http://mondomaine.com/monscript.php?cle=valeur) vous appelerez http://mondomaine.com/?XDEBUG_SESSION_START=pugdebug (resp. http://mondomaine.com/monscript.php?XDEBUG_SESSION_START=pugdebug ou http://mondomaine.com/monscript.php?cle=valeur&XDEBUG_SESSION_START=pugdebug).
Si vous avez bien mis pugdebug en attente (avec Start listening) alors vous devriez voir apparaître le contenu du premier script appelé avec en grisé la première commande appelée. A vous de jouer alors avec les points d'arrêt (un simple clic sur une ligne permet d'en ajouter/supprimer) et les fonctions "run", "over", "in" et "out".