O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

xD bug - Jak debugować PHP-owe aplikacje (Xdebug)

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 84 Anúncio

xD bug - Jak debugować PHP-owe aplikacje (Xdebug)

Baixar para ler offline

#LaravelPolandMeetup #23
Laravel Poland MeetUp #23 online
Temat: xD bug - jak debugować PHP-owe aplikacje (Xdebug)

Garść praktycznych informacji o debuggowaniu aplikacji

Autor: Marcin Tracz, Blumilk

#LaravelPolandMeetup #23
Laravel Poland MeetUp #23 online
Temat: xD bug - jak debugować PHP-owe aplikacje (Xdebug)

Garść praktycznych informacji o debuggowaniu aplikacji

Autor: Marcin Tracz, Blumilk

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Semelhante a xD bug - Jak debugować PHP-owe aplikacje (Xdebug) (20)

Mais de Laravel Poland MeetUp (20)

Anúncio

Mais recentes (20)

xD bug - Jak debugować PHP-owe aplikacje (Xdebug)

  1. 1. xD bug - jak debugować PHP-owe aplikacje (Xdebug)
  2. 2. Marcin Tracz Software developer w Blumilk marcin.tracz@blumilk.pl
  3. 3. Agenda ➔ Debugowanie interaktywne i nie interaktywne ➔ Xdebug - co i jak ➔ Xdebug - instalacja ➔ Xdebug - konfiguracja ➔ Xdebug - wywołanie sesji debugowania (WEB) ➔ PHPStorm konfiguracja ➔ Visual Studio Code konfiguracja ➔ Xdebug - wywołanie sesji debugowania (CLI) ➔ Xdebug, PHPStorm, Docker ➔ PHPStorm debugowanie testów, skryptów ➔ Zdalne debugowanie ◆ SSH ◆ NGROK ◆ Xdebug Cloud ◆ DBGproxy ➔ Xdebug alternatywy
  4. 4. Debugowanie aplikacji PHP interactive debugging non-interactive debugging
  5. 5. Xdebug?
  6. 6. Nie działa to debagołanie
  7. 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. 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.
  9. 9. Protokół DBGp SERVER CLIENT
  10. 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. 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. 12. Xdebug - a wersje PHP źródło https://xdebug.org/docs/compat#versions
  13. 13. Instalacja https://xdebug.org/docs/install Linux: Windows:
  14. 14. Instalacja - przez PECL
  15. 15. Instalacja ! Wyłączenie OPcache:
  16. 16. xdebug_info();
  17. 17. xdebug_info();
  18. 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
  19. 19. Debugging Clients źródło https://xdebug.org/docs/step_debug
  20. 20. Konfiguracja - PHPStorm (2022.2.3)
  21. 21. Konfiguracja - PHPStorm
  22. 22. Konfiguracja - PHPStorm NIE nasłuchuje na połączenia Xdebug Nasłuchuje na połączenia Xdebug
  23. 23. Konfiguracja - PHPStorm
  24. 24. Konfiguracja - PHPStorm
  25. 25. Znów nie działa to debagołanie. Pokaż, nosz kur** Może płyty nie ma?
  26. 26. Konfiguracja - Xdebug.ini
  27. 27. Konfiguracja - PHPStorm
  28. 28. Konfiguracja - PHPStorm
  29. 29. PHPStorm - opcje Xdebug https://www.jetbrains.com/help/phpstorm/debug-tool-window.html 1 2 3
  30. 30. PHPStorm - opcje Xdebug
  31. 31. Konfiguracja
  32. 32. Konfiguracja
  33. 33. Konfiguracja - Visual Studio Code
  34. 34. Konfiguracja - Visual Studio Code
  35. 35. Konfiguracja - Visual Studio Code 1 2 3
  36. 36. Konfiguracja - Visual Studio Code
  37. 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
  38. 38. Wywołanie sesji debugowania - CLI
  39. 39. Wywołanie sesji debugowania - CLI
  40. 40. Debugowanie skryptów CLI, np. kolejki JOB REDIS JOB JOB KOLEJKA
  41. 41. Debugowanie skryptów CLI - PHPStorm way
  42. 42. Debugowanie skryptów CLI - PHPStorm way
  43. 43. Wywołanie sesji debugowania podczas błędu kiedy wystąpi: PHP Notice lub Warning kiedy zostanie rzucony wyjątek: Throwable (Error lub Exception)
  44. 44. Mam 2 aplikacje backendowe - co robić, jak żyć? app1 app2 HTTP request + poprawna konfiguracja client_host
  45. 45. Xdebug, PHPStorm, Docker
  46. 46. Xdebug, PHPStorm, Docker
  47. 47. Xdebug, PHPStorm, Docker
  48. 48. Xdebug, PHPStorm, Docker
  49. 49. Xdebug, PHPStorm, Docker
  50. 50. Xdebug, PHPStorm, Docker
  51. 51. Xdebug, PHPStorm, Docker LOCAL DOCKER NETWORK PHP APP in container HOST? LOCALHOST
  52. 52. HOST address inside Docker
  53. 53. HOST address inside Docker Mac: host.docker.internal / docker.for.mac.host.internal (replaces docker.for.mac.localhost) Windows: host.docker.internal / docker.for.win.host.internal (replaces docker.for.win.localhost) Linux: host.docker.internal - Windows/Mac Docker version >= 18.03 - Linux Docker version >= 20.10.0 host.docker.internal https://github.com/moby/moby/pull/40007
  54. 54. HOST address inside Docker Windows Mac Linux
  55. 55. HOST address inside Docker host.docker.internal:host-gateway BEZ Z
  56. 56. HOST address inside Docker
  57. 57. PHPStorm, Docker, Xdebug
  58. 58. HOST address inside Docker https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host
  59. 59. host-gateway in Docker on Linux https://github.com/docker/cli/blob/master/opts/hosts.go
  60. 60. IP Hosta w kontenerze
  61. 61. PHPStorm debugowanie testów
  62. 62. PHPStorm debugowanie testów
  63. 63. CLI debugowanie testów
  64. 64. PHPStorm debugowanie widoków Blade /storage/framework/views
  65. 65. PHPStorm debugowanie widoków Blade
  66. 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”
  67. 67. Xdebug logs Brak parametru i ciastka, do wywołania sesji debugowania!
  68. 68. Xdebug logs - mode debug
  69. 69. Xdebug logs - mode debug Zainicjowanie sesji debugowania (parametr lub ciastko).
  70. 70. Xdebug logs - mode debug
  71. 71. Xdebug logs - mode develop BRAK LOGÓW
  72. 72. Xdebug a testy? Xdebug spowalnia testy!
  73. 73. Xdebug a testy?
  74. 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. 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
  76. 76. Zdalne debugowanie - NGROK źródło https://ngrok.com/ na dzień 7.11.2022
  77. 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. 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. 79. Xdebug Cloud - cennik Na dzień 5.11.2022 źródło: https://xdebug.cloud/signup
  80. 80. Xdebug Cloud - dashboard źródło: https://www.youtube.com/watch?v=Jny-RJDf2AM
  81. 81. Multi user debugging - DBGproxy źródło: https://xdebug.org/docs/dbgpProxy źródło: https://xdebug.org/download#dbgpProxy
  82. 82. Multi user debugging - DBGproxy źródło: https://blog.gougousis.net/xdebug-walkthrough/
  83. 83. Alternatywy dla Xdebug debugger: ➔ Zend Debugger paczki: ➔ Ray (Spatie) https://github.com/spatie/ray - płatne ➔ tracy (Nette) https://github.com/nette/tracy ➔ kint https://github.com/kint-php/kint/
  84. 84. Pytania? marcin.tracz@blumilk.pl Marcin Tracz

×