Aller au contenu principal

xDebug

Déboguer votre code PHP pas à pas avec xDebug

Notions théoriques

xDebug est une extension PHP qui fournit des capacités de débogage avancées : exécution pas à pas, inspection de variables, points d'arrêt (breakpoints), et profilage des performances.

Sans xDebug, le débogage se limite à des var_dump() ou dump() dispersés dans le code. Avec xDebug, vous pouvez arrêter l'exécution à n'importe quelle ligne et inspecter l'état complet de l'application.

Modes de xDebug

xDebug propose plusieurs modes configurables :

ModeUtilité
debugDébogage interactif pas à pas
profileProfilage des performances
coverageCouverture de code pour les tests
developAméliore les messages d'erreur (var_dump amélioré)

Prérequis

xDebug doit être installé en tant qu'extension PHP. Sur une installation locale, la méthode la plus simple est via PECL :

pecl install xdebug

Pour vérifier que xDebug est actif :

php -v

La sortie doit contenir with Xdebug v3.x.x.

Configuration dans php.ini

[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003

Exemple de mise en application

Débogage avec VS Code

  1. Installez l'extension PHP Debug dans VS Code.
  2. Créez le fichier .vscode/launch.json :
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
  1. Placez un breakpoint dans votre code (clic dans la marge gauche de l'éditeur).
  2. Lancez la configuration "Listen for Xdebug" dans VS Code (F5).
  3. Accédez à votre application dans le navigateur : l'exécution s'arrête au breakpoint.

Inspecter les variables

Une fois arrêté sur un breakpoint, le panneau de débogage de VS Code affiche :

  • Variables : l'état de toutes les variables locales et globales
  • Call Stack : la pile d'appels
  • Watch : des expressions à surveiller en temps réel

Les commandes de navigation :

  • F5 : Continuer jusqu'au prochain breakpoint
  • F10 : Passer à la ligne suivante (step over)
  • F11 : Entrer dans une fonction (step into)
  • Shift+F11 : Sortir de la fonction actuelle (step out)

Test de mémorisation/compréhension


Quel est le rôle principal de xDebug ?


Quel mode xDebug faut-il activer pour le débogage interactif ?


Sur quel port xDebug écoute-t-il par défaut (version 3) ?


Quelle commande VS Code permet d'entrer dans le corps d'une fonction lors du débogage ?


Comment vérifier que xDebug est correctement installé ?



TP pour réfléchir et résoudre des problèmes

Configurez xDebug pour déboguer votre application Symfony

Étape 1 : Ajoutez la configuration xDebug dans votre php.ini en activant le mode debug.

Étape 2 : Créez le fichier .vscode/launch.json pour que VS Code écoute xDebug sur le port 9003.


Bonne pratique - Désactiver xDebug en production

xDebug ralentit significativement l'exécution PHP (parfois 3 à 5 fois). Ne l'activez jamais en production. Utilisez des variables d'environnement pour gérer les configurations différentes entre développement et production. En Symfony, la configuration php.ini peut varier selon le serveur : vérifiez avec php -i | grep xdebug.

Une solution