Feb 15 2008
[lang_de]PHP debuggen[/lang_de][lang_en]Debugging PHP[/lang_en]
[lang_de]PHP existiert nun wirklich schon sehr lange. Und trotzdem gab es bisher nur kostenpflichtige Programme, mit denen man PHP sauber debuggen konnte. Dabei meine ich nicht die Ausgabe bestimmter Variablen mit var_dump oder mittels Firebug-Konsole. Nein, ich meine
- das setzen von Breakpoints innerhalb der PHP-Umgebung
- das schrittweise Überprüfen von Variablen ohne var_dump-Ausgaben
- die geziehlte Manipulation von Variableninhalten während der Laufzeit
- das geziehlte Verfolgen des Programm-Ablaufs innerhalb der Entwicklungsumgebung
Dabei sollte es natürlich unerheblich sein, ob man eine Konsolen-Anwendung programmiert oder ob man ein PHP-Script zur Erzeugung von Websiten erstellt.
Nun ist es endlich möglich, diese Möglichkeiten zu nutzen. Basis hierfür ist das PDT-Projekt im Rahmen der Eclipse-Umgebung. Es ist ein neues Projekt, das unabhängig zur Entwicklungsumgebung PHP Eclipse entstanden ist. Da letzteres Projekt in letzter Zeit auch eingeschlafen zu sein scheint, sollte für jeden PHP-Programmierer PDT auf jeden Fall ein Blick wert sein.
Innerhalb von PDT kann jeglicher PHP-Code debugged werden. Dabei kann sowohl auf den Zend-Debugger als auch auf das OpenSource-Modul xDebug zurückgegriffen werden. Es ist bei beiden Debuggern unerheblich, ob es sich um ein Konsolen-Script handelt oder ob es sich um eine Remote-Seite handelt. Vor allem das debuggen dieser Remote-Scripte ist sehr elegant gelöst. Man startet hierzu einfach den Debugger und kann die Seite wie gewohnt durchlaufen. Eclipse hält dabei die Verarbeitung der Scripte genau dann an, wenn ein Breakpoint gesetzt wurde. Dabei können alle Variableninhalte betrachtet werden und es ist auch möglich, diese Inhalte geziehlt zu manipulieren. Das Script kann anschließend schrittweise fortgesetzt werden oder man springt direkt zum nächsten Breakpoint.
Ich habe inzwischen mit dem Debugger in Verbindung mit xDebug beste Erfahrung gemacht. Konsolen-Ausgaben waren definitiv gestern!
[Link-Tipp]Remote debugging with PDT and xdebug
[/lang_de]
[lang_en]
PHP is really not a young language today. But until now, there have been only software with costs to debug PHP scripts. I don’t mean debugging via var_dump or with Firebug. No, I mean
- using breakpoints within the development environment
- checking variables step be step without using var_dump
- manupulating variables
- tracing program flows
Of course, it shouldn’t matter, if I’m analysing a script which was written for console or which was written for a web browser.
Now, this is all possible. All you have to use is the PDT project which is part of eclipse. It was developed independent of PHP Eclipse. It seems, that this project is not continued.
Within PDT, every PHP code can be debugged. There are two debuggers avaiable: the Zend-Debugger or an open source modul called xDebug. You can use both to debug PHP scripts which have been written for console or which have been written for browsers – so called remote scripts. If you want to debug remote scripts, you can start your debugger which will open your page in your favourite browser. You can use your web page as you use it without debugging. But when the script reaches a breakpoint, eclipse will stop it and you can see every variable and you can even manipulate them. If you want, you can continue the script step by step or you can jump to the next breakpoint.
I have used PDT for several weeks now and it works fantastic with xdebug. Debugging via var_dump was yesterday!
[Link tip]Remote debugging with PDT and xdebug
[/lang_en]


Ich habe das XDebug zusammen mit Eclipse PDT auch ausprobiert. Es hat auch vorzüglich geklappt… bis auf den kleinen aber sehr lästigen Umstand, dass die Breakpoints immer nur beim erstmaligen Start der Debugsession funktioniert haben. Sobald ich dann im Browser auf einen Link klicke, ging die ganze Debuginformation verloren und nix wars mehr mit debuggen. Und da hat alles Googeln und ausprobieren nix genützt. Ob ich bei jedem Skript “von Hand” das Cookie gestzt habe, das die PHP IDE für den Sessionstart benützt, oder ob ich das Firefox Plugin dazu benutzt habe, es ging einfach nicht… und aufgegeben….