Xdebug – debugowanie i profilowanie aplikacji PHP

1,906 views

Published on

Maciej Kosiedowski - Polskapresse Internet - Xdebug – debugowanie i profilowanie aplikacji PHP

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,906
On SlideShare
0
From Embeds
0
Number of Embeds
135
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Xdebug – debugowanie i profilowanie aplikacji PHP

  1. 1. Debugowanie z użyciem Xdebug Maciej Kosiedowski m.kosiedowski@polskapresse.pl Gdynia, 19.03.2013
  2. 2. „W C++ o błędach powiadamia kompilator, natomiast w PHP klient” © http://roflcopter.pl/6434
  3. 3. Do czego służy Xdebug?● Xdebug to narzędzie pozwalające debugować PHP jak każdy inny język programowania:● Wykonywać kod krok po kroku● Sprawdzać chwilowe wartości zmiennych● Wstawiać punkty przerwania (break-point)● Podglądać stos wywołania● Dodawać czujki (watch)● Zmieniać wartości niektórych zmiennych w czasie wykonania● Profilować aplikację
  4. 4. Konfiguracja serwera● Instalujemy Xdebuga ;)● Dodajemy do pliku ~/.htaccess linie: php_value xdebug.remote_host 127.0.0.1 php_value xdebug.remote_port 9000 php_value xdebug.remote_enable On php_value xdebug.remote_handler dbgp php_value xdebug.remote_autostart Off● Dodajemy do ~/.bashrc linię: export XDEBUG_CONFIG=remote_host=127.0.0.1 idekey=netbeans-xdebug● Podajemy adres IP swojego komputera, jeśli korzystamy z serwera deweloperskiego
  5. 5. Konfiguracja własnego komputera● W momencie uruchamiania debugowania serwer będzie próbował połączyć się z naszym komputerem● Windows może blokować połączenia z serwera do IDE – w takim przypadku należy odpowiednio skonfigurować lub wyłączyć zaporę systemu Windows
  6. 6. Instalacja dodatku do przeglądarki● Firefox: easy Xdebug – https://addons.mozilla.org/en-us/firefox/addon/easy-xdebug/ – Dostępny po zainstalowaniu na domyślnie ukrytym pasku dodatków● Chrome: Xdebug helper – https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc● Opera: Xdebug – https://addons.opera.com/pl/extensions/details/xdebug/● Każdy dodatek może wymagać ustawiania w konfiguracji klucza debugowania konkretnego dla używanego IDE: – netbeans-xdebug dla Netbeansa – ECLIPSE_DBGP dla Eclipse● Dodatek do Chrome domyślnie ustawiony jest pod Eclipse, pozostałe pod Netbeansa
  7. 7. Konfiguracja IDE – Netbeans● Ustawienia debugowania: – Włączamy obliczanie zmiennych i chmurek
  8. 8. Konfiguracja IDE - Netbeans● Ustawiamy projekt – Właściwości projektu → Run Configuration → Advanced – Wyłączamy otwieranie przeglądarki – Dodajemy mapowanie ścieżek jeśli działamy na serwerze deweloperskim
  9. 9. Debugowanie – Netbeans● Uruchamiamy sesję debugowania w Netbeansie za pomocą przycisku● Uruchamiamy sesję debugowania w dodatku przeglądarki● Wstawiamy punkt przerwania● Odświeżamy stronę
  10. 10. Debugowanie – pokaz na żywo
  11. 11. Profilowanie - konfiguracja● Dodajemy do ~/.htaccess: php_value xdebug.profiler_enable 0 php_value xdebug.profiler_enable_trigger 1 php_value xdebug.profiler_output_dir /home/login/cachegrind/ php_value xdebug.profiler_output_name cachegrind.out.%p.%R● Tworzymy katalog /home/login/cachegrind i nadajemy mu prawa 777● W CLI exportujemy zmienną: export XDEBUG_CONFIG=”profiler_enable=1 profiler_output_dir=/home/login/cachegrind/”
  12. 12. Profilowanie – analiza wyników● Narzędzia: – KCacheGrind – WinCacheGrind – Webgrind● Analiza najczęściej wykonywanych fragmentów kodu● Odnajdywanie najdłużej wykonujących się fragmentów kodu
  13. 13. Profilowanie – pokaz na żywo
  14. 14. Śledzenie zużycia pamięci● Potrzebne ustawione zmienne: xdebug.auto_trace 1 xdebug.trace_format 1● Przydatny skrypt: https://github.com/derickr/xdebug/raw/master/contrib/tracefile-analyser.php● Kłopotliwe do ustawienia z XDEBUG_CONFIG (nie działa). Przykładowe uruchomienie z CLI: php -d xdebug.auto_trace=1 -d xdebug.trace_format=1 shell.php akcja … php ~/tracefile-analyser.php /tmp/trace.2568677891.xt memory-own 20
  15. 15. Śledzenie zużycia pamięci – pokaz
  16. 16. Debugowanie w Eclipse● Jest możliwe● Największym problemem jest skonfigurowanie IDE● Google wie dużo na ten temat ;)
  17. 17. Dziękuję i zapraszam do pytań

×