Text Resizer Text Resizer
February 23rd, 2012
You're browsing: marcelpociot.de » PHP » Debugging in PHP – Wer die Qual hat, hat (wenig) Wahl

Debugging in PHP – Wer die Qual hat, hat (wenig) Wahl

Posted on Apr 20 in PHPby PrintText Resizer Text Resizer

Wenn man sich seinen Lebensunterhalt damit verdient PHP zu programmieren wird man bereits nach einigen Tagen feststellen, dass man nicht wirklich viel Zeit in die “Programmierung” von Applikationen steckt, sondern die meiste Zeit damit verbringt Fehler zu beheben.

Doch die meisten Fehler muss man dann auch erstmal finden.

In den meisten Fällen hangelt man sich also bei der täglichen Arbeit von einem var_dump , print_r oder echo zum nächsten.
Dann hat man das Problem endlich behoben, entfernt all seine Debug Ausgaben um mit einem Folgefehler konfrontiert zu werden und das ganze Spiel fängt von vorne an.

Wie gut das man ja üblicherweise 8 Stunden am Tag für solche Späße Zeit hat und nie unter Zeitdruck steht…

Effektiv ist das ganze natürlich nicht gerade, aber man hat ja schließlich keine andere Wahl und ausserdem hat man sich nach ein bis zwei Wochen auch schon daran gewöhnt.

Oder hat man etwa doch eine Wahl?

Nun gut, wie der Blogtitel vermuten lässt gibt es nicht all zu viele Möglichkeiten um sich das leben einfacher zu machen.

Wie bereits erwähnt ist die einfachste Möglichkeit des Debugging die simple Ausgabe von Variablen im Quellcode. Hier muss man dann allerdings darauf achten das auch wirklich alle Ausgaben wieder entfernt werden.
Es ist keine Seltenheit das sich auf der fünften Unterseite doch noch irgendwo ein var_dump versteckt hält.

Eine weitere Möglichkeit ist das Arbeiten mit Hilfe eines eigenen error_reporting Scripts. Hier kann man sich beispielsweise alle auftretenden Fehler samt Backtrace in eine Datei loggen oder sich die Fehler mit Hilfe von E-Mail oder Jabber zukommen lassen.
Nützlich ist diese Vorgehensweise aber auch nur solange es sich wirklich um PHP-Fehler handelt.

Sobald man vor dem Problem steht, das in irgendeiner Schleife eine Variable falsch gesetzt wird, weil es nunmal ein Logik Fehler ist, hilft einem das error_reporting leider auch herzlich wenig.

Also doch wieder var_dump, echo, print_r?

Nein, denn das es anders geht beweist seit langer Zeit die Firma ZEND, die dem Entwickler mit ihrem Zend Server einen kostenlosen PHP Debugging Server an die Hand gibt.

Im Zend Server Paket ist im Prinzip nur ein Apache 2 Webserver verbaut. Drumherum ist allerdings das interessantere.

Die bekannte Zend Engine sowie der Zend Debugger sind automatisch mit eingebunden, sowie ein nützliches Server Interface, mit dessen Hilfe man leicht PHP Einstellungen anpassen kann oder Apache Module de- und aktiviert.

In der kostenpflichtigen Version sind ausserdem einige sehr schöne Features enthalten, mit dessen Hilfe man seinen PHP Code optimieren kann.
So werden innerhalb des Server Interfaces alle langsamen PHP Scripte protokolliert. Wobei man natürlich Einstellungen vornehmen kann, was genau “langsam” bedeutet. Das kann in Zeit und/oder anhand des verbrauchten Speichers passieren.

Darüber hinaus werden PHP Fehler geloggt und können nach Datum und Art des Fehlers gefiltert werden. Als Ergebnis erhält man sofort die betroffene PHP Datei samt Backtrace und ein Auszug der betroffenen Zeilen.

Zend-Server-Interface-300x230 in Debugging in PHP - Wer die Qual hat, hat (wenig) Wahl

Der Zend Debugging Server ist jedoch sowohl in der kostenlosen Community Edition, als auch in der kostenpflichtigen Version enthalten. Dieser bietet eine nahtlose Integration in Zend Studio, welches ich persönlich noch in Version 5.5 betreibe.

Zudem sind Browser Toolbars für Firefox und den Internet Explorer erhältlich über die man eine Debug Session starten kann.

Um den Zend Debugger einzurichten muss man (hier anhand von Zend Studio 5.5) nur die IP Adresse des Debug Servers eintragen.

Um jetzt eine erste Test Debug Session zu starten muss man nur eine PHP Datei erzeugen, einen Breakpoint setzen, indem man auf die Zeilennummer in Zend Studio klickt, und anschließend F5 drücken.

Es wird jetzt eine Verbindung zum Debugging Server aufgebaut. Sobald das PHP Script nun den Breakpoint erreicht hat kann man sich bequem durch den Code navigieren und Variablen auf die Watchlist setzen.

Zend-Studio-Debug-Beispiel-300x212 in Debugging in PHP - Wer die Qual hat, hat (wenig) Wahl

Ich hoffe ich konnte einen kleinen Einblick in die Debug Möglichkeiten von PHP verschaffen.

Die aktuelle Version von Zend Server findet man unter Zend.com

Popularity: 62% [?]

Gib deinen Senf ab

Back to Top