
- Image by CalEvans via Flickr
Xdebug ist eine mächtige Erweiterung für den Apache Webserver. Es handelt sich im Grunde genommen um einen Profiler und Debugger für PHP Skripte. Mit Xdebug lassen sich so tolle Sachen machen wie zum Beispiel den kompletten Stacktrace einer Anwendung auszugeben bzw. eine Anwendung zu profilen. Dennoch ist das Alltagswerkzeug vieler Programmierer wohl immer noch var_dump(), print_r(), exit() oder die(). Nicht, dass dies schlecht wäre, aber heutzutage kosten Tools für die professionelle Softwareentwicklung nicht unbedingt viel Geld, besonders nicht wenn es sich dabei um Open Source Programme handelt.
Xdebug gehört in dieser Kategorie, frei verfügbarer Software. Zend Studio for Eclipse nicht. Ich möchte jetzt nicht anfangen über Vor- und Nachteile der verschiedenen IDE zu reden. Jede IDE hat ihre Daseinsberechtigung. Was im Zend Studio for Eclipse wirklich elegant gelöst ist, ist der intergrierter Debugger bzw. der Debuggingclient. Für alle, die es noch nicht wissen: Zend Studio hat einen Client, der überaus komfortabel Remote Debugging erlaubt. Es gibt hier aber leider einen Haken. Das Debugging funktioniert leider nur mit dem ebenfalls von Zend vertriebenen Zend Debugger, der wiederum Teil von Zend Platform ist. Letztere ist kostenpflichtig während der Debugger weiterhin frei verfügbar ist.
Wärend ich also mit Zend Studio for Eclipse arbeite und mir mal die Zeit nehme, die Debuggingfeatures auszuprobieren, fällt mir eben auf, dass XDebug nicht unterstützt wird. Also mal schnell im Internet geforscht und “Aha”, dieses Feature existiert bereits, wird aber nicht offiziell unterstüzt. Ohne groß darüber spekulieren zu müssen, Xdebug hat die besseren Features, ist kostenlos, leicht verfügbar und sogar über PECL installierbar und das scheint wohl nicht jedem zu gefallen. Also ohne weiteres großes Tralala, hier die hoffentlich idiotensichere Anleitung zur Installation von xdebug unter Ubunutu Linux und das Freischalten der versteckten Option unter Zend Studio.
Terminal öffnen und folgendes eingeben
sudo apt-get install php5-dev php-pear
Danach mittels PECL xdebug installieren
sudo pecl install xdebug
Nach abgeschlossener Installation sollte PECL so was Ähnliches wie das hier zurückgeben.
~ > sudo pecl install xdebug
Password:
downloading xdebug-2.0.3.tgz ...
Starting to download xdebug-2.0.3.tgz (286,325 bytes)
......................................................done: 286,325 bytes
...
Build process completed successfully
Installing '/usr/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.0.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=xdebug.so" to php.ini
Hier steht also dass wir die Erweiterung xdebug in die php.ini einfügen sollen. Netterweise liefert die Meldung auch gleich den kompletten richtigen Pfad mit. Unter Ubuntu funktioniert das so:
sudo gedit /etc/php5/apache2/php.ini
Nun nur noch folgende Zeile irgendwo in die php.ini einfügen
[xdebug]
extension=xdebug.so
Jetzt muss der Apache nur noch neu gestartet werden und xdebug ist aktiviert.
[xdebug]
sudo /etc/init.d/apache2 reload
Um den xdebug Support für Zend Studio for Eclipse freizuschalten muss folgendes gemacht werden.
#Falls die IDE dort liegt
cd /usr/local/ZendStudio/plugins
#einen neuen Order 'disabled' anlegen
Alle Dateien mit dem Prefix com.zend.php.debug* ins disabled Verzeichnis kopieren
mv com.zend.php.debug* disabled
#Zend Studio neu starten
./ZendStudio -clean
Innerhalb von Zend Studio lassen sich nun über das Debuggingmenü die xdebug Erweiterung einschalten.
Fazit
xdebug ist in den richtigen Händen ein sehr mächtiges Tool zur Analyse und Debugging von Anwendungen. Leider fehlt mir die Zeit, einen umfassenden Artikel über xdebug zu schreiben und ehrlich gesagt mache ich das Profilen hauptsächlich über die Konsole und das Debuggen mit PHP internen Funktionen. Eventuell liegt es auch daran, dass Debuggingfunktionalitäten oft nicht out of the box verfügbar sind. Zumindest bei einer kommerziellen IDE wie Zend Studio for Eclipse sollte dies der Fall sein. Dass dies nun mal nicht unbedingt so ist und dass es dennoch geht habe ich ja mit diesen Artikel bewiesen.
![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=33af90e5-f3e8-49c6-b8f2-16dd09086ec2)