FirePHP – przyjazne debug’owanie aplikacji internetowych

Debugowanie to poważny problem programistów

Bez względu na to jakimi dobrymi programistami jesteśmy nigdy nie ustrzeżemy się błędów. To normalne, błędy popełnia każdy, różnica pomiędzy dobrym programistą a złym polega m. in. na szybkości wykrycia błędnego kodu i naprawienia go.

Mówiąc o błędnym kodzie nie mam na myśli jedynie błędów syntaktycznych, ale również błędów logicznych, które nie powodują widocznych error’ów a jedynie błędne działanie aplikacji. Takie błędy są dużo trudniejsze do wykrycia.

Aby wykryć błędny kod niezbędne jest zdebugowanie zmiennych, obiektów, zasobów, które wykorzystywane są w tworzonej przez nas aplikacji. Brzmi banalnie, jednak w rzeczywistości nie jest to takie łatwe gdyż:

  • po pierwsze trzeba wstawić w odpowiednie miejsca funkcje var_dump() lub print_r()
  • po drugie funkcje te nie wyświetlają przejrzyste i łatwe do zinterpretowania dane
  • po trzecie debug’owanie na ekran może spowodować błędy aplikacji, a debugowanie do pliku jest niewygodne w odczycie (szczególnie w przypadku aplikacji flash’owych lub AJAX’owych)
  • po czwarte zdarza się, że format zwracanych danych uniemożliwia swobodne dodawanie własnych danych do debugowania (np. XML, JSon).
  • po piąge po skończeniu debugowania trzeba usunąć wszystkie instrukcje debugujące

Rozwiązaniem problemu debugowania jest FirePHP

Dużo tych wad… całe szczęście jest na to rozwiązanie. FirePHP to darmowa, open source’owa biblioteka, która wraz z pluginem do Firebug’a idealnie sprawdza się w roli debugera.

FirePHP debuguje dane w konsoli Firebug’a, informacje do debugowania są umieszczone w specjalnych nagłówkach HTTP przez co ‚output’ aplikacji pozostaje w nienaruszonym stanie. Rewelacja prawda?

Instalacja firePHP

Wymagania FirePHP to PHP 5.2+, Firefox z pluginem Firebug.

  • Instalujemy plugina do firefox’a Firebug
  • Instalujemy plugina do Firebug’a FirePHP
  • Ściągamy źródła FirePHP, warto zauważyć, że na stronie dostępne są informacje, jak zintegrować bibliotekę z wieloma znanymi frameworkami (CakePHP, CodeIgniter, Drupal, Kohana, ExpressionEngine, PRADO, Symfony, TYPO3, Zend Framework).
  • Integrujemy FirePHP z naszą aplikacją
  • Odpalamy stronę aplikacji w Firefox z uruchomionymi plugin’ami Firebug i FirePHP
  • Klikamy na ikonę Firebug’a a następnie przechodzimy do konsoli. W konsoli powinny być zaprezentowane zdebugowane zmienne naszej aplikacji.
  • W przypadku problemów przydać się mogą: mini tutorial how to, forum dyskusyjne o FirePHP.

Przykład działania

Pod adresem http://blog.adiasz.pl/examples/firephp/ stworzyłem prosty skrypt AJAX’owy łączący się z bazą i wykonujący prościutkie operacje. Jest zintegrowany z FirePHP, zachęcam do testów. Naprawdę warto! (Oczywiście musicie najpierw zainstalować plugin FireBug i FirePHP). Wszystkie pliki wykorzystane w tym przykładzie dostępne są tutaj.

Przykład powinien zaprezentować coś w stylu:

Na koniec, bardzo ważna informacja: po opublikowaniu projektu musicie wyłączyć debugowanie FirePHP poprzez dyrektywę:

$fp = FirePHP::getInstance( true );
$fp->setEnabled ( false );

W przeciwnym razie każdy internauta posiadający zainstalowany ten plugin będzie miał dostęp do niebezpiecznych z punktu bezpieczeństwa danych. Najlepiej w konfigu aplikacji sterować to poprzez zmienną typu boolean $development = true/false. Samych instrukcji debugujących nie trzeba kasować gdyż nie wiadomo kiedy się jeszcze przydadzą.

ps. FirePHP dostępne jest także dla innych niż PHP języków programowania aplikacji webowych: ASP, Python, Ruby.

4 myśli na temat “FirePHP – przyjazne debug’owanie aplikacji internetowych”

  1. Nie prościej funkcje pomocnicze pobierające POST I GET stworzyć w ten sposób:

    group(‚$_POST’);
    foreach ($_POST as $key=>$val) {
    $fp->log($val, $key);
    }
    $fp->groupEnd();

    ?>

  2. Jestem zainteresowany technologią AJAX i chciał bym skorzystać z niej przy obsłudze bazy MySQL poprzez PHP i HTML. Poszukuję przykładów obsługi tej bazy z wykorzystaniem narzędzi które wymieniłem.

  3. Zainteresowany jestem tak jak Pan wcześniej technologią AJAX i chciał bym skorzystać z niej przy obsłudze bazy MySQL poprzez PHP i HTML.
    Poszukuję przykładów obsługi tej bazy z wykorzystaniem narzędzi które byście Państwo plecili.

  4. FirePHP jest bardzo ciekawe i jakiś czas z niego korzystam. Jeśli chodzi o czytelność zwracanej zawartości przez var_dump() czy print_r() to można w sposób czytelniejszy odczytać ich wynik w źródle strony lub użyć dodatkowej funkcji nl2br(). Ponad to istnieje funkcja var_export(), która potrafi np. w taki sposób wyeksportować zawartość tablicy, aby później można było ją wczytać np. z pliku konfiguracyjnego poprzez require/include.

    Tak poza tym to wszystkim tym rozwiązaniom brakuje kilku rzeczy – watchy i uruchamiania krokowego. Polecam Panu deburrer Xdebug, który fajnie można zintegrować z Netbeansami i przy odpowiedniej konfiguracji nawet debugować aplikacje postawione na serwerach zdalnych (nie tylko localhost wchodzi w grę) – oczywiście pod pewnymi warunkami.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.