Debugowanie skryptów
PHP za pomocą Xdebug
Michał Pipa
Plan wystąpienia
  Wprowadzenie
  Debugowanie
  Kolorowy var_dump()
  Śledzenie wywołań funkcji
  Profilowanie
Wprowadzenie
Co to jest Xdebug?
Xdebug jest rozszerzeniem PHP stworzonym
przez Dericka Rethansa.
Wprowadzenie
Możliwości
  Dodatkowe informacje o błędach
  Kolorowanie wyjścia var_dump()
  Śledzenie stosu
  Interakt...
Wprowadzenie
Instalacja
Instalacja w Debian/Ubuntu:
# apt-get install php5-xdebug
Wprowadzenie
Konfiguracja
/etc/php5/conf.d/xdebug.ini
zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so
Debugowanie
Wprowadzenie
PHP z rozszerzeniem Xdebug łączy się z klientem
(NetBeans).
Debugowanie
Konfiguracja
Parametry zdalnego debugowania można
ustawiać zarówno w php.ini (globalnie),
jak i w .htaccess (d...
Debugowanie
Konfiguracja
Najważniejsze parametry:
  xdebug.remote_enable
  xdebug.remote_host
  xdebug.remote_port
  x...
Debugowanie
Konfiguracja
W konfiguracji Xdebug musimy podać adres
klienta (xdebug.remote_host). Oznacza to, że
Xdebug musi...
Debugowanie
Konfiguracja
Konieczność podania adresu klienta jest
problemem w następujących przypadkach:
  Więcej niż jede...
Debugowanie
Konfiguracja
Rozwiązanie:
  Przekierowanie portów (dotyczy NAT i jest
uciążliwe).
  Zastosowanie DBGp proxy.
Debugowanie
DBGp proxy
Klient rejestruje się w proxy poleceniem 'proxyinit'
i podaje parametr idekey. Dzięki temu proxy mo...
Debugowanie
DBGp proxy
Przykładowa sesja z udziałem pydbgpproxy:
$ ./pydbgpproxy -i 10.254.254.254:9001 -d 10.254.254.254:...
Debugowanie
Konfiguracja klienta (NetBeans)
Debugowanie
Konfiguracja klienta (NetBeans)
Debugowanie
Konfiguracja klienta (NetBeans)
Debugowanie
NetBeans
Śledzenie zmiennych:
Debugowanie
NetBeans
Podgląd i edycja wszystkich zmiennych:
Debugowanie
NetBeans
Podgląd stosu:
Debugowanie
NetBeans
Pułapki:
Debugowanie
NetBeans
Pułapki:
Kolorowy var_dump()
Przykład
Bez Xdebug:
Kolorowy var_dump()
Przykład
Z Xdebug:
Kolorowy var_dump()
Konfiguracja
  xdebug.overload_var_dump
  xdebug.var_display_max_depth
  xdebug.var_display_max_chi...
Śledzenie wywołań funkcji
Wprowadzenie
Śledzenie wywołań funkcji zapisuje w czytelnym
dla człowieka formacie informacje o:...
Śledzenie wywołań funkcji
Konfiguracja
  xdebug.auto_trace
  xdebug.collect_params
  xdebug.collect_return
  xdebug.sh...
Profilowanie
Wprowadzenie
Profilowanie jest podobne do śledzenia wywołań
funkcji. Wynik jest zapisywany w postaci czytelne...
Profilowanie
Konfiguracja
Włączenie profilowania:
xdebug.profiler_enable
Po włączeniu pliku profilu są zapisywane w
katalo...
Profilowanie
KCachegrind
Profilowanie
Webgrind
Dziękuję za uwagę!
Upcoming SlideShare
Loading in...5
×

Debugowanie skryptow php za pomoca xdebug

6,464

Published on

Debugowanie skryptow php za pomoca xdebug

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,464
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Debugowanie skryptow php za pomoca xdebug

  1. 1. Debugowanie skryptów PHP za pomocą Xdebug Michał Pipa
  2. 2. Plan wystąpienia   Wprowadzenie   Debugowanie   Kolorowy var_dump()   Śledzenie wywołań funkcji   Profilowanie
  3. 3. Wprowadzenie Co to jest Xdebug? Xdebug jest rozszerzeniem PHP stworzonym przez Dericka Rethansa.
  4. 4. Wprowadzenie Możliwości   Dodatkowe informacje o błędach   Kolorowanie wyjścia var_dump()   Śledzenie stosu   Interaktywne debugowanie   Profilowanie   Śledzenie wywołań funkcji   Analiza 'code coverage'
  5. 5. Wprowadzenie Instalacja Instalacja w Debian/Ubuntu: # apt-get install php5-xdebug
  6. 6. Wprowadzenie Konfiguracja /etc/php5/conf.d/xdebug.ini zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so
  7. 7. Debugowanie Wprowadzenie PHP z rozszerzeniem Xdebug łączy się z klientem (NetBeans).
  8. 8. Debugowanie Konfiguracja Parametry zdalnego debugowania można ustawiać zarówno w php.ini (globalnie), jak i w .htaccess (dla danego katalogu).
  9. 9. Debugowanie Konfiguracja Najważniejsze parametry:   xdebug.remote_enable   xdebug.remote_host   xdebug.remote_port   xdebug.idekey
  10. 10. Debugowanie Konfiguracja W konfiguracji Xdebug musimy podać adres klienta (xdebug.remote_host). Oznacza to, że Xdebug musi wiedzieć do jakiego klienta ma się podłączyć.
  11. 11. Debugowanie Konfiguracja Konieczność podania adresu klienta jest problemem w następujących przypadkach:   Więcej niż jeden programista chce debugować tę samą kopię skryptu.   Klient nie ma publicznego adresu IP (NAT).
  12. 12. Debugowanie Konfiguracja Rozwiązanie:   Przekierowanie portów (dotyczy NAT i jest uciążliwe).   Zastosowanie DBGp proxy.
  13. 13. Debugowanie DBGp proxy Klient rejestruje się w proxy poleceniem 'proxyinit' i podaje parametr idekey. Dzięki temu proxy może skojarzyć idekey z adresem i portem klienta oraz później przekierować do niego odpowiednie połączenia.
  14. 14. Debugowanie DBGp proxy Przykładowa sesja z udziałem pydbgpproxy: $ ./pydbgpproxy -i 10.254.254.254:9001 -d 10.254.254.254:9000 INFO: dbgp.proxy: starting proxy listeners. appid: 8431 INFO: dbgp.proxy: dbgp listener on 10.254.254.254:9000 INFO: dbgp.proxy: IDE listener on 10.254.254.254:9001 INFO: dbgp.proxy: Server:onConnect ('10.254.254.20', 40112) [proxyinit -p 9000 -k michal.pipa -m 0] INFO: dbgp.proxy: connection from 10.254.254.20:42010 [<__main__.sessionProxy instance at 0x874410c>] INFO: dbgp.proxy: Server:onConnect ('10.254.254.20', 40117) [proxystop -k michal.pipa]
  15. 15. Debugowanie Konfiguracja klienta (NetBeans)
  16. 16. Debugowanie Konfiguracja klienta (NetBeans)
  17. 17. Debugowanie Konfiguracja klienta (NetBeans)
  18. 18. Debugowanie NetBeans Śledzenie zmiennych:
  19. 19. Debugowanie NetBeans Podgląd i edycja wszystkich zmiennych:
  20. 20. Debugowanie NetBeans Podgląd stosu:
  21. 21. Debugowanie NetBeans Pułapki:
  22. 22. Debugowanie NetBeans Pułapki:
  23. 23. Kolorowy var_dump() Przykład Bez Xdebug:
  24. 24. Kolorowy var_dump() Przykład Z Xdebug:
  25. 25. Kolorowy var_dump() Konfiguracja   xdebug.overload_var_dump   xdebug.var_display_max_depth   xdebug.var_display_max_children   xdebug.var_display_max_data
  26. 26. Śledzenie wywołań funkcji Wprowadzenie Śledzenie wywołań funkcji zapisuje w czytelnym dla człowieka formacie informacje o:   Wywołanych funkcjach   Czasie wykonania funkcji   Rozmiar użytej pamięci   Parametry przekazane do funkcji   Wartości zwracane przez funkcję
  27. 27. Śledzenie wywołań funkcji Konfiguracja   xdebug.auto_trace   xdebug.collect_params   xdebug.collect_return   xdebug.show_mem_delta
  28. 28. Profilowanie Wprowadzenie Profilowanie jest podobne do śledzenia wywołań funkcji. Wynik jest zapisywany w postaci czytelnej dla programów, które służą do analizy tych danych.
  29. 29. Profilowanie Konfiguracja Włączenie profilowania: xdebug.profiler_enable Po włączeniu pliku profilu są zapisywane w katalogu /tmp (xdebug.profiler_output_dir).
  30. 30. Profilowanie KCachegrind
  31. 31. Profilowanie Webgrind
  32. 32. Dziękuję za uwagę!

×