JetBrains logo

PhpStorm

Déboguer avec PhpStorm

Acquérir des bases solides vous aidera à mieux comprendre ensuite les subtilités du débogage avec PhpStorm. Dans cet épisode, vous apprendrez comment démarrer une session de débogage, définir des points d'arrêt et parcourir efficacement votre code à l'aide de Xdebug.

Transcription

L'une des fonctionnalités les plus puissantes de PhpStorm est son débogueur. Le nom « débogueur » remonte aux années 1940 et signifie littéralement « quelque chose qui supprime les bugs ou les défauts d'un programme ». Un débogueur vous permettra de mettre votre code en pause pendant son exécution, ce qui permet notamment d'inspecter la mémoire du programme et de suivre le chemin que prend le code. L'objectif d'un débogueur est de faciliter la détection des problèmes et de supprimer les bugs de votre code.

PhpStorm fournit un débogueur intégré léger, mais le débogueur de loin le plus populaire pour PHP est Xdebug, que vous devrez installer séparément. La bonne nouvelle ici est que PhpStorm effectuera l'installation pour vous. Voyons comment configurer Xdebug avec PhpStorm et commencer le débogage.

Supposons que Xdebug ne soit pas installé. Que se passe-t-il lorsque vous commencez à déboguer un script PHP, un test par exemple ? Au lieu d'exécuter le test normalement, vous pouvez appuyer sur le bouton Debug. Comme vous le voyez, PhpStorm nous informe qu'aucun débogueur n'est installé et propose de corriger cela pour vous. Appuyez simplement sur Update Interpreter Info, puis sur Download and install Xdebug extension, et laissez un moment à l'IDE pour configurer Xdebug pour vous.

Lorsque cela sera fait, PhpStorm exécutera de nouveau votre test automatiquement avec le débogueur activé. Cependant, il ne se passe pas grand-chose… C'est parce que nous n'avons pas encore indiqué au débogueur de s'arrêter quelque part. Pour cela, nous devrons utiliser ce que l'on appelle des « points d'arrêt ».

Un point d'arrêt est un endroit dans votre code où le débogueur cessera de s'exécuter pendant une seconde pour vous permettre d'inspecter ce qui se passe.

Par exemple, ajoutons un point d'arrêt sur cette ligne. Cliquez sur le numéro de ligne dans la gouttière et le point d'arrêt sera défini. Maintenant, relançons notre test.

Cette fois, vous remarquerez que certaines choses ont changé. Le programme est en pause et PhpStorm affiche de nombreuses informations.

Sur la gauche, vous voyez tout ce qui s'est passé avant que nous arrivions à ce point d'arrêt. Nous sommes arrivés ici via ces appels de méthode. Vous pouvez cliquer dessus et PhpStorm vous montrera le chemin du code à travers les fichiers.

Sur la droite, vous voyez toutes les variables actuellement disponibles au point d'arrêt. Il y a une variable $this qui fait référence à la classe de test ; vous pouvez l'ouvrir et voir ce qu'elle contient. Il y a d'autres variables, comme la variable globale $_ENV par exemple. PhpStorm vous montrera ce qu'elle contient et vous pourrez voir comment la liste des variables change à chaque fois que nous naviguons vers l'un des appels de méthode précédents.

Le débogueur recule maintenant dans le flux de notre programme, ce qui peut être très utile si vous avez besoin de savoir ce qui s'est passé auparavant. Mais comment faire pour avancer ?

Vous pouvez réactiver l'exécution du débogueur en appuyant sur le bouton Resume, mais alors le test se terminera simplement.

Revenons donc à notre point d'arrêt, et au lieu d'appuyer sur Resume, nous pouvons appuyer sur les boutons Step over ou Step into. Et ces deux-là sont très puissants.

« Step over » signifie que le débogueur va passer à l'instruction suivante et faire à nouveau une pause. « Step into » signifie que le débogueur va aller plus loin et déboguer ce qui se passe dans un appel de fonction.

Ensemble, ces deux boutons sont hyper efficaces. Ils vous permettent de naviguer dans le flux de votre programme tout en observant la façon dont les variables changent, les raisons pour lesquelles les conditions correspondent ou non, combien de fois quelque chose est bouclé, et bien plus.

Si le débogueur est un outil puissant, il peut aussi être complexe et hors contexte, il est difficile de donner des exemples vraiment parlants. C'est aussi quelque chose qui requiert de la pratique pour gagner en assurance, comme lorsqu'on apprend à jouer d'un instrument par exemple.

Alors, voici ce que nous allons faire. Je vous ai montré les bases pour démarrer avec le débogueur : comment démarrer une session de débogage, les points d'arrêt et les boutons Step over et Step into. La seule façon de vous familiariser avec le débogage est de pratiquer. La prochaine fois que vous écrirez une instruction var_dump ou dd, essayez d'utiliser le débogueur à la place ; vous rencontrerez peut-être quelques difficultés la première fois que vous le ferez, mais cela deviendra plus facile avec le temps et sera payant à long terme.