If you want to get the trace into a variable or DB, I suggest to do the following:
<?php
ob_start();
debug_print_backtrace();
$trace = ob_get_contents();
ob_end_clean();
$query = sprintf("INSERT INTO EventLog (Trace) VALUES ('%s')",
mysql_real_escape_string($trace));
mysql_query($query);
?>
debug_print_backtrace
(PHP 5)
debug_print_backtrace — Gibt die Daten für eine Ablaufverfolgung aus
Beschreibung
$options = 0
[, int $limit = 0
]] )debug_print_backtrace() gibt eine PHP Ablaufverfolgung aus. Diese enthält Ausgaben zu allen Funktionsaufrufen, mit include oder require eingebundenen Dateien und mit eval() ausgeführtem Kode.
Parameter-Liste
-
options -
Beginnend mit PHP 5.3.6 kann über diesen Parameter eine Bitmaske mit folgenden möglichen Optionen übergeben werden:
debug_print_backtrace() Optionen DEBUG_BACKTRACE_IGNORE_ARGS Gibt an ob der "args" Index aller Funktions- und Methoden- Argumente weggelassen werden soll (um z.B. Speicher zu sparen). -
limit -
Beginnend mit PHP 5.4.0 kann hiermit die Anzahl der auszugebenden Aufrufebenen begrenzt werden. Der Vorgabewert (
limit=0) führt zur Ausgabe aller Aufrufe.
Rückgabewerte
Es wird kein Wert zurückgegeben.
Changelog
| Version | Beschreibung |
|---|---|
| 5.4.0 |
Der optionale Parameter limit wurde hinzugefügt.
|
| 5.3.6 |
Der optionale Parameter options wurde hinzugefügt.
|
Beispiele
Beispiel #1 debug_print_backtrace() Beispiel
<?php
// include.php Datei
function a() {
b();
}
function b() {
c();
}
function c(){
debug_print_backtrace();
}
a();
?>
<?php
// test.php Datei
// Dies ist die Datei die Sie ausführen sollten
include 'include.php';
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
#0 eval() called at [/tmp/include.php:5] #1 a() called at [/tmp/include.php:17] #2 include(/tmp/include.php) called at [/tmp/test.php:3] #0 c() called at [/tmp/include.php:10] #1 b() called at [/tmp/include.php:6] #2 a() called at [/tmp/include.php:17] #3 include(/tmp/include.php) called at [/tmp/test.php:3]
debug_print_backtrace
05-Jun-2007 08:23
28-Mar-2007 12:10
A cleaner example:
<?php
function a() {
b();
}
function b() {
c();
}
function c(){
debug_print_backtrace();
}
a();
?>
outputs:
#0 c() called at [C:\debugbacktracetest.php:7]
#1 b() called at [C:\debugbacktracetest.php:3]
#2 a() called at [C:\debugbacktracetest.php:14]
15-Mar-2005 10:47
This functionality is now implemented in the PEAR package PHP_Compat.
More information about using this function without upgrading your version of PHP can be found on the below link:
http://pear.php.net/package/PHP_Compat