Débogage avec PhpStorm

Construisez-vous des bases solides pour plonger plus profondément dans le monde nuancé du débogage dans 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 pour inspecter la mémoire du programme, de suivre le chemin emprunté par le code, et bien plus. L'objectif d'un débogueur est de faciliter la détection des problèmes et de supprimer les bugs de votre code.

PhpStorm intègre un débogueur léger, mais le débogueur de loin le plus populaire pour PHP est Xdebug, que vous devrez installer séparément. Heureusement, PhpStorm effectuera l'installation pour vous. Voyons donc comment configurer Xdebug avec PhpStorm et comment débuter le débogage.

Supposons que Xdebug n'est 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 voyez, PhpStorm nous informe qu'aucun débogueur n'est installé, mais il peut également corriger ça 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.

Une fois cela terminé, PhpStorm réexécutera automatiquement votre test avec le débogueur activé. Cependant, il ne se passe pas grand-chose… C'est parce que nous n'avons pas encore demandé 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 tout est prêt. 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 à travers les fichiers.

Sur la droite, vous voyez toutes les variables actuellement disponibles au point d'arrêt. Vous avez une variable $this qui fait référence à la classe de test ; vous pouvez l'ouvrir et voir ce qu'elle contient. D'autres variables, comme la variable globale $_ENV, sont également présentes. PhpStorm vous montrera son contenu et vous pourrez voir comment la liste des variables change à chaque fois que nous passons à 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é avant qu'autre chose ne se produise. Mais comment aller de l'avant ?

Vous pouvez réactiver le débogueur en appuyant sur le bouton Resume, mais le test se terminera.

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 encore plus loin et débogue ce qui se passe dans un appel de fonction.

Ensemble, ces deux boutons sont super puissants. Essentiellement, ils vous permettent de naviguer dans le flux de votre programme, en gardant un œil sur la façon dont les variables changent, pourquoi les conditions correspondent ou non, combien de fois quelque chose est bouclé, etc.

Mais le débogage n'est pas seulement puissant ; il est aussi intimidant. Il y a beaucoup à dire et il est difficile de donner des exemples pertinents sans contexte. C'est aussi quelque chose avec quoi il faut vous entraîner pour gagner en assurance, comme de 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. Vous devrez vous y habituer, et la seule façon d'y parvenir est de vous entraîner. La prochaine fois que vous écrirez une instruction var_dump ou dd, essayez d'utiliser le débogueur à la place ; il y aura quelques difficultés la première fois, mais cela deviendra plus facile avec le temps et sera payant à long terme.