Wetterprognosen Angewandte Meteorologie Luftreinhaltung Geoinformatik Fabrikstrasse 14, CH-3012 Bern Tel. +41 (0)31-307 26 26 Fax +41 (0)31-307 26 10 e-mail: office@meteotest.ch www.meteotest.ch Bern, intern Installation & Anwendung Xdebug für Eclipse Bearbeitung: CST
1. Systemvoraussetzungen Für dieses Dokument verwendete Versionen: PHP 5.2.6, Apache 2.2.9 von XAMPP 1.6.7 für Windows Eclipse 3.3.1.1 (Europa) mit PDT Xdebug 2.0.3 Ich nehme an dass bis auf Xdebug alles installiert ist und läuft. 2. Installation Xdebug Xdebug 2.0.3 als Windows-Modul herunterladen Die.dll-Datei in den Ordner c:\xampp\php\extensions kopieren. Die Datei c:\xampp\apache\bin\php.ini editieren und folgenden Block ergänzen damit er in etwa so aussieht (Ist evt. schon vorhanden): [xdebug] xdebug.remote_enable=1 xdebug.remote_host="localhost" xdebug.remote_port=9000 xdebug.remote_handler="dbgp" zend_extension_ts="c:\xampp\php\extensions\php_xdebug-2.0.3-5.2.5.dll" Dabei den Dateinamen überprüfen und evt. bereits vorhandene zend_extension_ts Einträge entfernen. Apache neustarten. Mit Hilfe von phpinfo() kann die korrekte Installation von Xdebug überprüft werden, xdebug muss auf der generierten Seite als eigener Block auftauchen. Das war s schon.
3. Eclipse für Xdebug einrichten Zuerst falls nötig in den Systemeinstellungen von Eclipse Xdebug als Debugger für PHP festlegen: Menu Window Preferences PHP PHP Executables: PHP auswählen und Edit drücken falls der Debugger noch nicht XDebug lautet:
4. Eine Runconfiguration für ein PHP-Skript einrichten Für jedes Skript das man laufen und debuggen möchte, braucht Eclipse immer eine Runconfiguration: Erstellt werden kann sie im Debug Dialog oder im Run Dialog, erreichbar über das Menu vom Debug und Run-Button.
In diesem Dialog können beliebig viele Konfigurationen erstellt werden. Grundsätzlich für uns interessant sind die Typen PHP Script und PHP Web Page. Ersteres führt ein Skript auf der Kommandozeile aus und zeigt die Standardausgabe in der Konsole, mit letzterem kann man eine ganze Webseite rendern und debuggen. Jede Konfiguration trägt einen frei wählbaren Namen. Der Debugger und das Executable sollten bereits korrekt eingetragen sein. Jetzt noch das auszuführende PHP-Skript auswählen und gegebenenfalls im zweiten Reiter Kommandozeilenparameter zum übergeben eingeben. Für eine Webseite sieht der Dialog leicht anders aus: Speziell hier ist dass die URL mit der das Skript aufgerufen wird entweder vom PHP Server gegeben ist (Siehe Dialoge unter New und Configure) oder von Hand im Abschnitt URL konfiguriert wird. Diese Konfigurationen bleiben gespeichert und können in Zukunft über das Menu der Debug/Run-Buttons einfach gestartet werden. Ein Klick auf diese Buttons startet die letzte Auswahl nochmals.
5. Debugging Perspektive Beim Debugging öffnet sich automatisch die Debug-Perspektive: Standardmässig startet der Debugger und pausiert vor der ersten Zeile. Oben links finden sich alte Durchgänge und die aktuelle Session inkl. den Kontrollen. Oben rechts die aktuellen Variablen und deren editierbaren Werte. In der Mitte der Programmcode an der aktuellen Stelle. Tipp: Mit der Maus über einer Variable schweben und einen Moment warten und man sieht deren Inhalt. Im Programmcode können bereits im Editor mit Doppelklicken auf das graue Band links der Zeilenzahlen Breakpoints gesetzt werden: Unten die Konsole mit der Standardausgabe. Ist die Runconfiguration eine PHP Web Page dann öffnet sich zusäzlich ein Browserfenster mit der aktuell generierten Webseite.
6. Debugging-Kontrollen Von links nach rechts: Remove all terminated launches räumt das Fenster oben links auf und entfernt alle alten Sessions. Resume (F8) führt das akutelle Skript aus bis zum nächsten Breakpoint oder bis es sich selber beendet. Suspend unterbricht das Skript ohne es abzubrechen. Terminate (CTRL-F2) bricht das Skript ab. Disconnect beendet die Verbindung zu einem Remote-Debugger (Benutzen wir nicht.) Step Into (F5) führt die nächste Anweisung im Programmcode aus und springt dabei in selbstgeschriebene Funktionen hinein. Step Over (F6) führt die nächste Anweisung im Programmcode aus ohne Funktionen genauer anzusehen. Auch eigene Funktionen werden wie eingebaute Funktionen behandelt. Step Return (F7) springt aus dem aktuellen Funktionsaufruf eine Hierarchie höher hinaus. Drop To Frame wird von PHP nicht unterstützt. Use Step Filters kann Funktionen filtern welche wie bei Step Over übersprungen werden. Dazu gibt es noch Run To Line welche im Kontextmenu des Programmcodes zu finden ist: Es führt das Skript bis zur angeklickten Zeile aus (Wie ein temporärer Breakpoint.)
7. Breakpoint Conditions Per Rechtsklick auf einen Breakpoint und mit der Auwahl von Breakpoint Properties kommt man in den Bedingungsdialog: An diesem Breakpoint wird nur gestoppt wenn die Bedingung wahr ist. Sehr praktisch um Spezialfälle zu untersuchen. 8. Includes & Requires & Pfade generell Kleine potentielle Falle: Debug & Run werden immer vom tiefsten Verzeichnis des dazugehörigen Projektes ausgeführt. Und nicht von dort wo das Skript selber gespeichert ist. Relative Pfadangaben könnten daran scheitern.