Input (Using: PHP Version 5.2.5-pl1-gentoo):
<?php
class CTest
{
public static function say($a_szVar)
{
debug_print_backtrace();
echo '<br />';
}
}
CTest::say('static call');
$obj = new CTest;
$obj->say('object call');
?>
Output:
#0 CTest::say(static call) called at [C:\PHPDocument4.php:11]
#0 CTest::say(object call) called at [C:\PHPDocument4.php:15]
Notice that the second line of the output outputs "::" instead of "->" when calling the function using an object.
debug_print_backtrace
(PHP 5)
debug_print_backtrace — Stampa una backtrace
Descrizione
void debug_print_backtrace
( void
)
debug_print_backtrace() stampa una backtrace PHP. Stampa le chiamate di funzione, i file included/required e tutto cio' che viene valutato dalla funzione eval().
Elenco dei parametri
Questa funzione non ha parametri.
Valori restituiti
Nessun valore viene restituito.
Esempi
Example #1 Esempio di funzione debug_print_backtrace()
<?php
// include.php file
function a() {
b();
}
function b() {
c();
}
function c(){
debug_print_backtrace();
}
a();
?>
<?php
// test.php file
// questo e' il file che dovrebbe essere eseguito
include 'include.php';
?>
Il precedente esempio visualizzerĂ qualcosa simile a:
#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
harmor
19-Feb-2008 01:54
19-Feb-2008 01:54
taner
21-Aug-2007 04:52
21-Aug-2007 04:52
bortuzar: a simpler version, w/o output buffering:
<?php
$query = sprintf("INSERT INTO EventLog (Trace) VALUES ('%s')",
mysql_real_escape_string(join("\n", debug_backtrace())) );
mysql_query($query);
?>
bortuzar at gmail dot com
05-Jun-2007 11:23
05-Jun-2007 11:23
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);
?>
petermarkellis at googlemail dot com
28-Mar-2007 03:10
28-Mar-2007 03: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]
aidan at php dot net
15-Mar-2005 01:47
15-Mar-2005 01: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
