Débogage d'une application PHP dans vi
- Le 13 mars 2018 – technique, PHP
Lors du développement d’une application, il est souvent utile de pouvoir analyser son comportement. Dans ce billet technique, nous allons voir comment déboguer un programme en PHP directement dans vi
grâce à xdebug
sur un serveur Ubuntu 16.04.
Installation côté serveur
On part du principe que PHP est déjà installé.
La première étape est d’installer xdebug
:
sudo apt update sudo apt install php-xdebug
Il faut ensuite le configurer pour permettre le débogage dans vi
:
sudo vi /etc/php/7.0/fpm/conf.d/30-config-xdebug.ini xdebug.remote_enable=on xdebug.remote_handler=dbgp xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_autostart=1
Puis redémarrer le service PHP pour que la configuration soit prise en compte :
sudo service php7.0-fpm restart
Activer cette même configuration pour PHP CLI :
sudo ln -s /etc/php/7.0/fpm/conf.d/30-config-xdebug.ini /etc/php/7.0/cli/conf.d/30-config-xdebug.ini
Installation côté utilisateur[modifier]
La deuxième étape est d’installer le plugin vdebug
pour vi
. Pour l’instant, en version 1.5.2, ce plugin nécessite vi
avec le support de Python 2 (une version pour Python 3 est en cours de développement). Vous pouvez vérifier la version de Python supporté par votre installation vi
avec la commande suivante :
vi --version
Dans les fonctionnalités activées, Python 2 doit être disponible (+python
) et Python 3 désactivé (-python3
). Si ce n’est pas le cas, vous pouvez installer vim-nox-py2
qui embarque Python 2 :
sudo apt install vim-nox-py2
Ensuite, il faut installer vdebug
:
mkdir ~/git cd ~/git git clone https://github.com/joonty/vdebug.git cd vdebug git checkout tags/v1.5.2 cp -R ~/git/vdebug/plugin ~/.vim/.
Utilisation au quotidien[modifier]
Enfin, il ne vous reste plus qu’à lancer vi
:
vi
Puis lancer le débogage avec la touche <F5>
. Ensuite, il faut lancer un script PHP (soit en chargeant une page web avec votre navigateur, soit en ligne de commande).
Dans vi
, on a alors accès à un environnement de débogage complet, dont voici les principales commandes :
<F5>
: démarrer / exécuter (jusqu’au prochain point d’arrêt ou à la fin du script)<F2>
: passer à la ligne suivante (step over)<F3>
: entrer dans le bloc (step into)<F4>
: sortir du bloc (step out)<F6>
: arrêter le débogage (arrête le script)<F7>
: détacher le script du débogueur<F9>
: exécuter jusqu’au curseur<F10>
: activer / désactiver le point d’arrêt sur la ligne courante<F11>
: afficher les variables de contexte (par exemple après un appel àeval
)<F12>
: évaluer la variable sous le curseur:Breakpoint <type> <args>
: activer un point d’arrêt de n’importe quel type (voir:help VdebugBreakpoints
):VdebugEval <code>
: évaluer le code et afficher le résultat<Leader>e
: évaluer l’expression surlignée et afficher le résultat
Notes complémentaires[modifier]
- Nous avons présenté ici le débogage avec
vi
comme interface utilisateur, mais de nombreux autres environnements de développement (IDE) supportent le protocole de débogagedbgp
et peuvent être utilisés en alternative. - La configuration
xdebug
présentée lance automatiquement le débogueur ; il est possible de n’activer celui-ci qu’au cas par cas, par exemple lorsqu’un cookie est envoyé ou une variable d’environnement active : voir la documentation Xdebug pour plus de détails. - Pour des raisons de performance et de sécurité, il est déconseillé d’activer Xdebug dans des environnements de production.