TANSOT

Xdebug

25.06.2020 01:28

Jednym z uroków platformy .NET i paradygmatu „Visual Studio-driven development” jest fakt, że po utworzeniu projektu możemy bez żadnych dodatkowych kroków uruchomić go pod graficznym debuggerem. W PHP wymaga to ciut więcej zabawy, dlatego w tym poście opiszę jak skonfigurować to pod PhpStormem.

Odrobina teorii

Integracja debuggera z IDE opiera się o model klient-serwer. PhpStorm nasłuchuje na porcie TCP (domyślnie 9000), a debugger inicjuje połączenie i wysyła do IDE komunikaty zawierające obecny stan wykonania skryptu.

Let’s get this party started

Pierwszy krok to zainstalowanie i skonfigurowanie rozszerzenia Xdebug. W pliku php.ini powinno znaleźć się coś mniej więcej takiego:

[xdebug]
zend_extension="xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port="9000"

Dla testu można wykonać polecenie takie jak:

$ php -r 'xdebug_debug_zval_stdout("argc");'

Wynik w rodzaju argc: (refcount=0, is_ref=0)=1(24) oznacza, że rozszerzenie zostało załadowane poprawnie.

Jeśli korzystamy z wbudowanego serwera PHP i nie chcemy umieszczać tej konfiguracji w php.ini, możemy podać wspomniane flagi jako argumenty do polecenia, np. tak:

$ php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=1 -dxdebug.remote_port=9000 -S 127.0.0.1:8000 -t public/

Teraz kluczową sprawą jest włączenie nasłuchiwania połączeń od debuggera. W tym celu z menu Run wybieramy „Start listening for PHP Debug Connections”. Od tej chwili debugger powinien reagować na ustawione w IDE breakpointy, a my możemy w końcu odpocząć od print-driven debugging :P