debug_print_backtrace

(PHP 5)

debug_print_backtrace Prints a backtrace

Description

void debug_print_backtrace ([ int $options = 0 [, int $limit = 0 ]] )

debug_print_backtrace() prints a PHP backtrace. It prints the function calls, included/required files and eval()ed stuff.

Parameters

options

As of 5.3.6, this parameter is a bitmask for the following options:

debug_print_backtrace() options
DEBUG_BACKTRACE_IGNORE_ARGS Whether or not to omit the "args" index, and thus all the function/method arguments, to save memory.

limit

As of 5.4.0, this parameter can be used to limit the number of stack frames printed. By default (limit=0) it prints all stack frames.

Return Values

No value is returned.

Changelog

Version Description
5.4.0 Added the optional parameter limit.
5.3.6 Added the optional parameter options.

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  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]

See Also

Коментарии

I like the output of debug_print_backtrace() but I sometimes want it as a string.

bortuzar's solution to use output buffering is great, but I'd like to factorize that into a function.  Doing that however always results in whatever function name I use appearing at the top of the stack which is redundant.

Below is my noddy (simple) solution.  If you don't care for renumbering the call stack, omit the second preg_replace().

<?php
   
function debug_string_backtrace() {
       
ob_start();
       
debug_print_backtrace();
       
$trace ob_get_contents();
       
ob_end_clean();

       
// Remove first item from backtrace as it's this function which
        // is redundant.
       
$trace preg_replace ('/^#0\s+' __FUNCTION__ "[^\n]*\n/"''$trace1);

       
// Renumber backtrace items.
       
$trace preg_replace ('/^#(\d+)/me''\'#\' . ($1 - 1)'$trace);

        return 
$trace;
    }
?>
2008-11-10 23:51:21
http://php5.kiev.ua/manual/ru/function.debug-print-backtrace.html
Автор:
Another way to manipulate and print a backtrace, without using output buffering:

<?php
// print backtrace, getting rid of repeated absolute path on each file
$e = new Exception();
print_r(str_replace('/path/to/code/'''$e->getTraceAsString()));
?>
2009-07-28 16:20:13
http://php5.kiev.ua/manual/ru/function.debug-print-backtrace.html
Автор:
If your show your error messages in HTML (with suitable safety using entities), this function won't work nicely because it uses newlines for formatting.

Here is a function that works similarly, but using <BR> tags. Insert it near the beginning of your program to add a stack to Warning output only, or modify it as you like:

// Here is code for error stack output in HTML:
function error_handler_callback($errno,$message,$file,$line,$context)
    {
    if ($errno === E_WARNING)
        echo "Stack, innermost first:<br>".nl2br((new Exception())->getTraceAsString());
    return false; // to execute the regular error handler
    }
set_error_handler("error_handler_callback");
2020-08-02 17:58:16
http://php5.kiev.ua/manual/ru/function.debug-print-backtrace.html
If you see string arguments and parameters getting cut off like this:

#0 hook.php(324): output_notice('checkout_before...')
#1 hook.php(348): invoke_hook('checkout_before...', Array)

You can increase the maximum length of arguments and parameters in the printed trace through an PHP INI setting:

<?php
ini_set
('zend.exception_string_param_max_len'100);
debug_print_backtrace();
?>

…so you can read the full arguments:

#0 hook.php(324): output_notice('checkout_before_payment')
#1 hook.php(348): invoke_hook('checkout_before_payment', Array)

In edge cases, it might even uncover nested traces that you didn't notice before.
2024-10-24 16:51:09
http://php5.kiev.ua/manual/ru/function.debug-print-backtrace.html

    Поддержать сайт на родительском проекте КГБ