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 — Prints a backtrace
Description
void debug_print_backtrace
( void
)
debug_print_backtrace() prints a PHP backtrace. It prints the function calls, included/required files and eval()ed stuff.
Parameters
This function has no parameters.
Return Values
No value is returned.
Examples
Example #1 debug_print_backtrace() example
<?php
// include.php file
function a() {
b();
}
function b() {
c();
}
function c(){
debug_print_backtrace();
}
a();
?>
<?php
// test.php file
// this is the file you should run
include 'include.php';
?>
The above example will output something similar to:
#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
20-Feb-2008 04:54
20-Feb-2008 04:54
taner
21-Aug-2007 06:52
21-Aug-2007 06: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
06-Jun-2007 01:23
06-Jun-2007 01: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 05:10
28-Mar-2007 05: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 04:47
15-Mar-2005 04: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
