Wie funktioniert das eigentlich mit dem Debuggen?

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
Das lässt sich ja recht einfach feststellen: Am Ende steht nicht das auf dem Bildschirm, was man gerne hätte. Trotzdem kann man schon hier den Fehler eingrenzen: Gibt es eine Fehlermeldung? Oder sind einfach die Daten, die da stehen, nicht wie erwünscht?

2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
Bei einer Fehlermeldung ist das einfach, da wird die fehlerhafte zeile meistens mit angegeben. Aber Achtung: Der Fehler kann sich auch einige zeilen davor oder danach befinden. Ohne Fehlermeldung ist man etwas auf sein Geschick angewiesen, die richtige Stelle zu finden.

3. An den Anfang des Scriptes schreibt man die Zeile: error_reporting(E_ALL);
Das bewirkt, dass auf jeden Fall alle Fehler, die PHP selbst erkennt, auch ausgegeben werden. Vorsicht ist geboten bei Programnmen, die man sich irgendwo fertig kopiert hat: Die könnten u.U. die Fehler in eine eigene Datei umleiten, das sollte überprüft werden.

4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
Was sind markante Stellen?
  • Vor SQL-Anweisungen lässt man sich die Variablen ausgeben, die man in der SQL-Anweisung benutzen will.
  • Die SQL-Anweisung sollte man sich auf jeden Fall auch komplett ausgeben lassen, um eventuelle Fehler zu finden.
  • Vor Funktionsaufrufen lässt man sich die Parameter ausgeben, um deren Plausibilität zu prüfen.
  • Innerhalb von If-Blöcken lässt man sich etwas wie "Bedingung1" ausgeben, um zu sehen, ob der Block überhaupt ausgeführt wird.
  • Einige Funktionen helfen bei der Fehlersuche: mysql_error, print_r

5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
Wenn man es richtig macht, kann man so gut wie alle Fehler damit finden. Ausnahme sind höchstens Bugs in PHP, die aber dann meistens schon bekannt sind.

6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
Google ist Dein Freund! Die Suche nach konkreten Fehlermeldungen ist meistens erfolgreich.

7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
Es hat tatsächlich keinen Sinn, schon vorher in Foren um Rat zu fragen, denn mehr als hier beschrieben wurde, kann sowieso niemand tun. Wenn Du dann in Deinem Posting auch nicht genau klar machst, was Du bereits unternommen hast, wirst Du sehr wahrscheinlich darauf hingewiesen werden, erst mal selbst zu debuggen.

8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Es gibt nur wenige Ausnahmen, wo man nicht sofort zu einer Lösung kommt: Bugs in PHP selbst und technisch unmögliche Lösungen. Meistens gibt es aber auch dafür einen Workaround.