Skip to content

Variablen_mit_base_object::debug()_inspizieren

Marlon Kern edited this page Mar 23, 2016 · 5 revisions

Sie können die Methode base_object::debug() mit beliebig vielen Parametern aufrufen. Wird kein Parameter übergeben, besteht die Ausgabe lediglich aus dem Backtrace (sofern aktiviert) und dem Speicherverbrauch sowie der Zeit seit dem letzten debug() -Aufruf. Sie können Strings und Zahlen übergeben, Variablen oder Objekte. Die meisten Klassen, die Sie schreiben, sind indirekt von base_object abgeleitet. Daher können Sie debug() einfach auf dem aktuellen Objekt mit $this->debug() aufrufen. debug() lässt sich aber auch als Klassenmethode von base_object mit base_object::debug() aufrufen.

Beispielaufrufe von base_object::debug()

...
$this->debug();
$this->debug(1);
base_object::debug('test', 1);
$this->debug($this, $var, 'blah');
...

Der folgende Screenshot stellt die Ausgabe der Debugaufrufe aus dem obigen Listing dar:

Beispiel einer Ausgabe mit base_object::debug()

File:Base_object_debug_beispielausgabe.png

Das Backtrace enthält auch die Zeilenangaben. Das macht es leicht den Programmablauf nachzuvollziehen. Die Angaben„Memory Diff“ und „Time Diff“ beziehen sich auf den jeweils vorhergegangenen debug() -Aufruf. Werden mehrere Parameter übergeben, werden Sie direkt nacheinander ausgegeben und das Backtrace wird nur einmal ausgegeben.

Die Ausgabe von Objekten ist üblicherweise sehr lang. In dem Beispiel sehen Sie auch, warum es so wichtig ist, die Debugausgabe auf Livesystemen abzuschalten. Datenbank-Zugangsdaten und Informationen über die Pfadstruktur können ausgegeben werden, sodass potentielle Angreifer ohne viel Aufwand wichtige Informationen über das System erhalten würden.

Kategorie:Fehlersuche in papaya CMS

Clone this wiki locally