←Terug naar het blog

Hoe PHP-code stap voor stap te debuggen met Xdebug en PhpStorm op een DDEV-setup

2022-10-08‱4 minuten leestijd

Wat is debuggen?

Volgens Wikipedia: “In computerprogrammering en softwareontwikkeling is debuggen het proces van het vinden en oplossen van bugs (defecten of problemen die de correcte werking belemmeren) binnen computerprogramma's, software of systemen.”

Volgens het internet: “Debuggen is als de detective zijn in een misdaadfilm waarbij je ook de moordenaar bent.” – Filipe Fortes

Wat is DDEV?

DDEV is een open source tool waarmee lokale sites snel kunnen worden opgezet met behulp van docker. En je hoeft niet veel van docker te weten om het te kunnen gebruiken, je hoeft het alleen maar geĂŻnstalleerd te hebben. Een lijst met commando's om DDEV en een WordPress- of Drupal-project aan de praat te krijgen, is beschikbaar op ttps://davidloor.com/2021/12/22/how-to-setup-a-wordpress-and-drupal-local-site-with-ddev/

Wat is Xdebug?

Xdebug, volgens de officiĂ«le website, “is een extensie voor PHP en biedt een reeks functies om de PHP-ontwikkelervaring te verbeteren”.

Een van de functies die Xdebug biedt, is stap-voor-stap debuggen, waarbij Xdebug communiceert met een IDE via het DBGp-protocol. PhpStorm, Sublime, Netbeans, Visual Studio Code en andere bekende IDE's ondersteunen het. Met stap-voor-stap debuggen kunnen programmeurs breekpunten instellen op elke regel van een PHP-script, waar ze de uitvoering willen stoppen om de status en het gedrag van het programma op dat specifieke punt te kunnen zien.

Waarom zouden we ons druk maken om het gebruik van een tool als xDebug als we functies als error_log, print_r, var_dump en andere vergelijkbare functies hebben die we allemaal veel hebben gebruikt? Omdat xDebug je een veel snellere codeur en bugfixer zal maken.

Laten we aannemen dat je een php-bestand moet debuggen, waar je bijna zeker van bent dat er een bug in zit, gebaseerd op de serverfoutlogs, door alleen functies als error_log, print_r te gebruiken. Je moet deze functies gaan aanroepen, de variabelen doorgeven die je wilt uitvoeren, en de pagina in de browser vernieuwen om de uitvoer te controleren, en als de variabelen je niet de informatie geven die je nodig hebt om het probleem op te lossen, moet je het proces herhalen met een andere set variabelen totdat je de informatie krijgt die nuttig kan zijn om de bug op te lossen. En, zoals we weten, is dat proces tijdrovend.

Om dezelfde hypothetische bug van hierboven te debuggen, in een PHP-script, met behulp van xdebug, moet je het breekpunt instellen op de regel(s) waar je de status van het programma wilt zien, en de browser vernieuwen. Je kunt alle variabelen in scope zien tijdens het verzoek, zoals je kunt zien in het volgende screenshot, in slechts één interactie.

PHP-debuggen met Xdebug en PhpStorm

Xdebug installeren en inschakelen

  1. Xdebug is al geĂŻnstalleerd bij gebruik van DDEV.
  2. Om Xdebug in te schakelen op het DDEV-project, typ je in de terminal gewoon ddev xdebug on
    1. je zou Enabled xdebug als uitvoer moeten krijgen

Luisteren naar PHP-debugverbindingen starten in PhpStorm

  1. Open je PHP-project in PhpStorm
  2. In de rechterbovenhoek van PhpStorm vind je een klein telefoontje-icoon, klik erop om te beginnen met luisteren naar php-debugverbindingen.
Luisteren naar php-debugverbindingen starten
  1. Open je lokale site in een browser, en in PhpStorm krijg je een melding om de inkomende verbinding van Xdebug te accepteren, waar je op Accepteren moet klikken.
Inkomende verbinding van Xdebug

Laatste gedachten

Xdebug is slechts een andere tool die gebruikt kan worden om bugs in PHP-code te vinden en op te lossen. Het kan in veel gevallen de productiviteit van een PHP-ontwikkelaar verhogen.

PhpStorm is ook een andere tool, die geweldige functies heeft voor PHP-ontwikkeling. Ik begon het 2 jaar geleden te gebruiken nadat ik alle voordelen hoorde die het mijn collega's bood. Meer dan 13 jaar lang was ik een groot fan van Apache Netbeans, dat ook geweldig werkt met Xdebug, maar er waren wel extra stappen nodig om het volledig werkend te krijgen, en het gebruikte te veel bronnen van mijn computer, waardoor deze super traag werd.

We moeten niet vergeten dat, “Je bent zo goed als de tools die je gebruikt.”

Categorieën: