7. Xdebug - ogólny zarys
➔ Derick Rethans
➔ 2002 rok
➔ open source
➔ PHP extension (PECL package https://pecl.php.net/package/xdebug)
➔ https://xdebug.org/
➔ https://github.com/xdebug/xdebug
➔ aktualne stabilne wydanie na dzień 9.11.2022: 3.1.6 (z dnia 8.11.2022)
➔ aktualne beta wydanie na dzień 5.11.2022: 3.2.0RC1 (z dnia 10.10.2022)
➔ pierwsze wydanie: 0.6.0 (z dnia 25.04.2002)
https://github.com/xdebug/xdebug/releases/tag/0.6.0
https://github.com/xdebug/xdebug/tags?after=1.2.0rc2
8. Protokół DBGp
Specyfikacja protokołu:
https://xdebug.org/docs-dbgp.php
Wersja: 1.0
Autorzy:
- Shane Caraveo, ActiveState
- Derick Rethans
Protokół zapewnia komunikację między silnikiem debuggera (np. Xdebug),
a IDE debuggera (np. PHPStorm, VS Code).
Silnik debugera (Xdebug) inicjuje sesję debugowania.
Silnik debuggera nawiązuje połączenie z nasłuchującym IDE, a następnie czeka, aż IDE zainicjuje polecenia.
10. Jak to działa?
1. IDE nasłuchuje na porcie 9000
2. Użytkownik wysyła request
inicjując sesję debugowania, do
Xdebug. (parametr
XDEBUG_SESSION_START)
3. Xdebug rozpoczyna sesję
debugowania i próbuje nawiązać
połączenie do IDE. Wysyła pakiet
INIT i czeka. Nie wykonuje
jeszcze żadnego kodu.
4. IDE negocjuje funkcje lub ustawia
dowolne punkty przerwania
5. IDE wysyła polecenia, aby
interaktywnie przechodzić przez
kod
Xdebug v2 config params!
źródło https://crosp.net/blog/software-development/web/php/understanding-and-using-xdebug-with-phpstorm-and-magento-remotely/
11. Jak to działa?
źródło https://crosp.net/blog/software-development/web/php/understanding-and-using-xdebug-with-phpstorm-and-magento-remotely/
Xdebug v2 config params!
12. Xdebug - a wersje PHP
źródło https://xdebug.org/docs/compat#versions
18. Wywołanie sesji debugowania - WEB
➔ parametr GET/POST, XDEBUG_SESSION, XDEBUG_SESSION_START, XDEBUG_TRIGGER
➔ ręczne dodanie ciastka (cookie) XDEBUG_SESSION
z pomocą przychodzą wtyczki w przeglądarkach
◆ Xdebug Helper - Firefox
◆ Xdebug helper - Chrome
◆ Xdebug helper - Microsoft Edge
◆ XDebugToggle - Safari
➔
Xdebug będzie zawsze próbował zainicjować sesję debugowania
Aby wyłączyć sesję debugowania, usuń ciastko, lub wyłącz z poziomu wtyczki w przeglądarce.
Ewentualnie parametr XDEBUG_SESSION_STOP
37. Wywołanie sesji debugowania - CLI
➔ env variable, XDEBUG_SESSION, XDEBUG_TRIGGER, XDEBUG_CONFIG
wartość tych zmiennych nie ma znaczenia, dopóki nie ustawisz ręcznie xdebug.trigger_value
66. Xdebug a wydajność aplikacji?
Xdebug spowalnia wydajność aplikacji!
“XDebug checks each HTTP request for the existance of a specific URL
parameter or a cookie in order to determine if it should be activated or not”
74. Zdalne debugowanie
Możliwe opcje:
➔ Publiczne IP + przekierowania portów na routerze
➔ Tunel SSH (reverse SSH port forwarding)
➔ NGROK
➔ Xdebug Cloud
Jeśli jesteś w innej sieci niż serwer z aplikacją PHP, którą musisz
debugować, możesz mieć problem. Xdebug ze zdalnego serwera nie może
bezpośrednio połączyć się z Twoją maszyną przez wszystkie zapory,
routery NAT lub inną infrastrukturę sieciową.
developer
IDE
PHP app
with
Xdebug
local internet
75. Zdalne debugowanie - tunel SSH
1. local port forwarding
2. remote port forwarding (reverse tunneling)
źródło https://goteleport.com/blog/ssh-tunneling-explained/
źródło https://docs.devsense.com/en/vs/debugging/remote-debug-via-ssh
Opcja -R instruuje klienta SSH, aby przekazał port
9003 ze zdalnej maszyny do miejsca,
na localhost:9003, gdzie Debugger (IDE) będzie
nasłuchiwał.
E
77. Xdebug Cloud - beta
https://xdebug.cloud/
➔ 2021 rok
➔ płatne
➔ tylko dla firm
➔ multi - user debugging (kilka jednoczesnych sesji debugowania)
Dokumentacja:
https://xdebug.cloud/docs
źródło: https://xdebug.cloud/signup
78. Xdebug Cloud - beta
Xdebug
Cloud
developer
IDE
aplikacja
(z Xdebug)
Xdebug session
trigger request
(with XDEBUG_SESSION param/cookie)
local
internet
źródło: https://xdebug.cloud/
źródło: opracowanie własne
79. Xdebug Cloud - cennik
Na dzień 5.11.2022 źródło: https://xdebug.cloud/signup