Debug PHP XDebug + VSCode

Salut à tous,

M’attaquant actuellement à de gros projets PHP avec des architectures logiciels complexe impliquant de nombreux designs patterns différents pas forcément facile à débugger (factory d’observer pour des plugins d’éditions, etc ….

Débugger à base de dump et var_dump prend du temps et n’est pas du tout performant, j’ai toujours tendance à oublié le contexte, des variables, … et je dois recommencer le debug à la main.

Venant du monde objet (C++,C# et Java) j’avais l’habitude de l’execution pas-à-pas et modification de code à la volée, cette méthode me manquait beaucoup.

Depuis pas mal de temps j’entends parler de XDebug, mais je ne l’avais jamais utilisé, c’est désormais chose faite.

D’après le manuel de configuration de xdebug, si on utilise l’option remote_connect_back, ça désactive l’option remote_enable et remote_host, mais ce n’est pas mon cas avec ma version et ça faisait l’inverse, donc mon instance locale ne débuggait pas mon script sur mon serveur de dev (distant).

Configuration du php.ini

zend_extension=xdebug.so
xdebug.remote_connect_back = 1
xdebug.remote_port=9009
xdebug.remote_handler=dbgp

Un petit restart de php-fpm :

 systemctl restart php-fpm

Configuration Visual Studio Code

Il nous faut désormais configurer le path de notre projet et faire correspondre

{
 "version": "0.2.0",
 "configurations": [
 {
 "name": "Listen for XDebug",
 "type": "php",
 "request": "launch",
 "port": 9009,
 "serverSourceRoot": "/srv/http/dev/",
 "localSourceRoot": "${workspaceRoot}"
 },
 {
 "name": "Launch currently open script",
 "type": "php",
 "request": "launch",
 "program": "${file}",
 "cwd": "${fileDirname}",
 "port": 9009
 }
 ]
}

Il suffira ensuite d’appuyer sur F5 dans VSCode pour démarrer le débuggage.

Vous pouvez installer l’extension chrome xdebug helper.

Et voilà, vous pouvez désormais débugger vos applications php depuis VSCode.