Debugování CLI skriptů s Xdebugem
Jan MikešDebugování je každodenním chlebem programátorů. Ukáži vám, jak rychle a jednoduše se dají debugovat konzolové skripty s Xdebugem.
Už žádné print() a echo v konzolových commandech pro zjištění hodnoty proměnné  :-).
Nezáleží na tom, jestli používáš Symfony\Console nebo pouštíš běžný PHP skript, většinou to děláš nějak takto:
php script.php
# nebo
bin/console myCommandZnáš to, ve tvém kódu se něco rozbilo, děje se tam černá magie a ty potřebuješ ověřit, jaká je hodnota proměnné, kolik iterací se provede atd.. Není nic jednoduššího, než si vypsat potřebné informace a pak ukončit běh programu.
Představ si situaci s následujícím kódem, kdy potřebuješ zjistit, jaká je hodnota $c a že to doopravdy je 9765625.
$a = 5;
$b = 10;
$c = $a ** $b;
echo $variable; die(); je něco co vídám velice často, je to rychlé a splní to účel.
Ale co když chci vypsat více proměnných a v kódu se chci posouvat nebo jej zastavit na více místech? Jak to dělat lépe?
Xdebug na pomoc
Následující řádky předpokládají nainstalovanou a aktivní xdebug extension pro vaše PHP. Nejrychlejší kontrola je přes příkaz php -v|grep 'Xdebug'.
Postup je opět velice jednoduchý:
- Zapnu naslouchání IDE pro příchozí spojení Run → Listen for debug connections
- Umístím breakpoint na místo, kde chci běh skriptu zastavit
- Spustím skript se zapnutým xdebugem & Profit
Skript s xdebugem pustíme takto:
php -d xdebug.remote_autostart=on -d xdebug.remote_enable=1 script.php myCommand
# nebo
php -d xdebug.remote_autostart=on -d xdebug.remote_enable=1 bin/console myCommand
Alias jako příjemný bonus
Super, ale komu se chce stále dokola psát php -d xdebug.remote_autostart=on -d xdebug.remote_enable=1 a hlavně, kdo si to má pamatovat?
Zde přichází na pomoc alias, mě osobně vyhovuje phpx, ale fantazii se meze nekladou:
alias phpx='php -d xdebug.remote_autostart=on -d xdebug.remote_enable=1'S touto parádou je použití následující:
phpx script.php
# nebo
phpx bin/console myCommandAby byla změna permanentní, je potřeba řádek s aliasem přidat do bash_profile, cesta k souboru se liší dle OS a příkazové řádky, nejčastěji se jedná o ~/.bash_profile, ~/.bashrc  nebo ~/.zshrc.
Přeji šťastné a veselé debugování CLI skriptů!
Chci se dozvědět více!
Přihlaš se na školení Začněte debugovat jako profíci s xdebugem, kde probereme téma více do hloubky a ukážeme si pokročilé tipy!