Debugging

Aus VMS1 Tutorial

Wechseln zu: Navigation, Suche

Debugging bezeichnet das Finden von Fehlern in einem Skript.

Debugging betreibt man, nachdem ein Fehler durch Testen oder Meldung von regulären Benutzern festgestellt wurde, um diesen zu lokalisieren und anschließend beheben zu können. Dabei möchte man möglichst viele Informationen zu dem Fehler sammeln, also in welcher Datei/Zeile wird er ausgelöst, wodurch wird er ausgelöst, welche weiteren Folgen hat er und wie könnte man ihn beheben.

Dazu ist eine genaue Beschreibung des gesamten Vorgangs nötig, der zu dem fehlerhaften Zustand führt. Beispielsweise hilft einem folgende Meldung eines Users kaum weiter: "Konnte keine Klammlose auszahlen".

Man müsste evtl. wissen, wann war das, wie viel Guthaben hatte der User, wurde ihm vom Skript eine Fehlermeldung angezeigt, wenn ja, welche, usw.

Beispiel Datenbankanfrage

Wenn eine Datenbankanfrage nicht zum gewünschten Ergebnis führt, liegt das häufig an syntaktischen Fehlern und Tippfehlern bei Spalten- / Tabellennamen.

Will man bspw. eine Information des aktuell eingeloggten Benutzers ausgeben:

$ret = db_query('SELECT bla FROM vms_kontodaten WHERE uid='.$_SESSION['uid'].' LIMIT 1');
 
$erg = <|>mysql_fetch_array|>($ret);
 
<|>echo|> $erg['bla'];

Führt das erstmal zu keiner Ausgabe. Je nachdem, wie PHP konfiguriert wurde, erhält man eine Fehlermeldung der Art:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /htdocs/vms/content/konto/uebersicht.php on line 25

Die einem jetzt zwar schon die Zeile verrät, aber noch nicht viel weiterhilft. Da in dieser Zeile an sich kein Fehler ist, hier wird $ret aus der Zeile davor verwendet, kannman sich erschließen, dass die Datenbankanfrage

SELECT bla FROM vms_kontodaten WHERE uid='.$_SESSION['uid'].' LIMIT 1

fehlerhaft sein muss.

Um nun eine genaue Meldung zu bekommen, fügt man danach folgende Zeile ein:

<|>echo|> <|>mysql_error|>();

und erhält dann:

Unknown column 'bla' in 'field list'

Und hat den Fehler somit eingegrenzt und weis, wie man ihn beheben kann bzw. was ihn ausgelöst hat, da es die Spalte "bla" in dieser Tabelle nicht gibt.


PHP Fehlermeldungen

Persönliche Werkzeuge