Signatur
Beschreibung
debug_print_backtrace() gibt den aktuellen Aufrufstapel als Text direkt auf der Standardausgabe aus. Jede Zeile zeigt eine Aufrufebene mit Funktions- oder Methodenname, Dateiname und Zeilennummer sowie den übergebenen Argumenten. Dies ist besonders hilfreich beim schnellen Debugging, um zu verstehen, über welchen Codepfad eine bestimmte Stelle im Code erreicht wurde.
Im Gegensatz zu debug_backtrace(), das ein Array zurückgibt, schreibt diese Funktion den Backtrace direkt aus. Wer die Ausgabe weiterverarbeiten möchte, sollte stattdessen debug_backtrace() verwenden oder die Ausgabe über Output-Buffering (ob_start() / ob_get_clean()) abfangen.
Mit dem Parameter $options lässt sich steuern, ob Funktionsargumente in der Ausgabe enthalten sind: Die Konstante DEBUG_BACKTRACE_IGNORE_ARGS unterdrückt Argumente und kann bei der Ausgabe sensibler Daten (z. B. Passwörter) sinnvoll sein. Mit $limit kann die maximale Anzahl der dargestellten Aufrufebenen begrenzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $options | int | 0 | Bitmaske aus Optionskonstanten. Aktuell wird DEBUG_BACKTRACE_IGNORE_ARGS (Wert 2) unterstützt, das die Ausgabe der Funktionsargumente unterdrückt. |
| $limit | int | 0 | Begrenzt die Anzahl der ausgegebenen Aufrufebenen. Bei 0 (Standard) werden alle Ebenen ausgegeben. |
Rückgabewert
Beispiele
Einfacher Backtrace durch verschachtelte Funktionen
<?php
function dritte() {
debug_print_backtrace();
}
function zweite() {
dritte();
}
function erste() {
zweite();
}
erste();
Backtrace ohne Argumente und mit Limitierung
<?php
function c(string $password) {
// Argumente werden ausgeblendet, um sensible Daten zu schützen
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
}
function b(string $user, string $password) {
c($password);
}
function a() {
b('admin', 'geheimesPasswort123');
}
a();
Backtrace-Ausgabe als String abfangen
<?php
function tiefeFunktion() {
ob_start();
debug_print_backtrace();
$trace = ob_get_clean();
// Weiterverarbeitung, z.B. in Log-Datei schreiben
file_put_contents('/tmp/debug.log', $trace, FILE_APPEND);
echo "Backtrace wurde ins Log geschrieben.\n";
}
tiefeFunktion();
// Wichtig · Fallstricke
Sicherheitshinweis: Standardmäßig werden Funktionsargumente in der Ausgabe angezeigt. Enthält der Aufrufstapel sensible Daten wie Passwörter, Tokens oder persönliche Informationen, sollte DEBUG_BACKTRACE_IGNORE_ARGS gesetzt werden, um eine ungewollte Offenlegung zu verhindern.
Produktivumgebungen: debug_print_backtrace() sollte ausschließlich in Entwicklungs- und Debugging-Szenarien eingesetzt werden. In Produktivumgebungen ist die direkte Ausgabe eines Backtraces ein Sicherheitsrisiko, da interne Pfade, Dateinamen und Logik des Systems offengelegt werden.
Wer den Backtrace programmatisch auswerten möchte, sollte debug_backtrace() verwenden, das ein strukturiertes Array zurückgibt.