Tutoriel Vidéo PHP Xdebug, l'exécution pas à pas

Télécharger la vidéo

Lorsque l'on développe on passe pas mal de temps à débugger son code et à rechercher la cause de certaines erreurs. Un bug est souvent causé par une variable ou une fonction qui n'a pas la valeur attendue et la recherche se fait souvent à grand coup de var_dump()et de die().

Même si cette méthode est simple elle peu faire perdre pas mal de temps avec en plus le risque de laisser un var_dump trainer lors de la mise en ligne.

Exécution pas à pas

Pour débugger plus efficacement notre code on préfère utiliser le principe de l'éxécution "pas à pas". Le but est de stopper l'éxécution de notre script à un instant "t" afin d'inspecter la valeur des différentes variables et mieux comprendre le contexte d'éxécution.

Avant de parler technique, un peu de terminologie :

  • breakpoint ou point d'arrêt permet d'indiquer sur quelle ligne le script doit s'arréter pour être inspecté
  • step over permet d'éxécuter la ligne courante et de s'arréter à la prochaine ligne
  • step in permet de rentrer dans la fonction présente sur la ligne courante
  • step out remonte vers la fonction parente à la fonction sous le curseur
  • continue continue l'éxécution du script jusqu'au prochain point d'arrêt

Xdebug

Pour mettre en place l'éxécution pas à pas il va falloir commencer par activer l'extension php Xdebug.

  • Si vous utilisez wamp sur windows xdebug est déjà installé
  • Sur mac vous pouvez utiliser homebrew brew install php70-xdebug
  • Sur linux un simple paquet suffit apt-get install php-xdebug

Une fois cette extension installée vous pouvez l'activer en modifiant le fichier php.ini et en activant l'option xdebug.remote_enable

zend_extension=xdebug.so
; zend_extention="C:/chemin/pour/windows.dll" si vous êtes sur windows
xdebug.remote_enable=1

Si vous utilisez le serveur interne de PHP vous pouvez activer ces options directement gràce aux drapeau -d

php -S localhost:8080 -ddisplay_errors=1 -dzend_extension=xdebug.so -dxdebug.remote_enable=1

Une fois démarré avec ces options, PHP lancera l'écoute sur le port 9000 (par défaut) lorsqu'on lui demandera de démarrer une session Xdebug

  • En ajoutant ?xdebug_session_start=dev dans les paramètres
  • ou via un cookie (activable gràce à une extension par exemple)

Editeur

Maintenant il nous faut pouvoir contrôler notre éxécution pas à pas en ajoutant des breakpoints et il n'est pas forcément nécessaire de disposer d'un gros IDE pour cela :