(PHP 4 >= 4.3.0, PHP 5)
debug_backtrace — Generates a backtrace
$options = DEBUG_BACKTRACE_PROVIDE_OBJECT
   [, int $limit = 0
  ]] )debug_backtrace() generates a PHP backtrace.
optionsAs of 5.3.6, this parameter is a bitmask for the following options:
| DEBUG_BACKTRACE_PROVIDE_OBJECT | Whether or not to populate the "object" index. | 
| DEBUG_BACKTRACE_IGNORE_ARGS | Whether or not to omit the "args" index, and thus all the function/method arguments, to save memory. | 
TRUE or FALSE, which are the same as 
       setting or not setting the DEBUG_BACKTRACE_PROVIDE_OBJECT option respectively.
      
     limit
       As of 5.4.0, this parameter can be used to limit the number of stack frames returned.
       By default (limit=0) it returns all stack frames.
      
Returns an array of associative arrays. The possible returned elements are as follows:
| Name | Type | Description | 
|---|---|---|
| function | string | The current function name. See also __FUNCTION__. | 
| line | integer | The current line number. See also __LINE__. | 
| file | string | The current file name. See also __FILE__. | 
| class | string | The current class name. See also __CLASS__ | 
| object | object | The current object. | 
| type | string | The current call type. If a method call, "->" is returned. If a static method call, "::" is returned. If a function call, nothing is returned. | 
| args | array | If inside a function, this lists the functions arguments. If inside an included file, this lists the included file name(s). | 
| Version | Description | 
|---|---|
| 5.4.0 | Added the optional parameter limit. | 
| 5.3.6 | The parameter provide_objectchanged tooptionsand additional optionDEBUG_BACKTRACE_IGNORE_ARGSis added. | 
| 5.2.5 | Added the optional parameter provide_object. | 
| 5.1.1 | Added the current object as a possible return element. | 
Example #1 debug_backtrace() example
<?php
// filename: /tmp/a.php
function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}
a_test('friend');
?>
<?php
// filename: /tmp/b.php
include_once '/tmp/a.php';
?>
Results similar to the following when executing /tmp/b.php:
Hi: friend
array(2) {
[0]=>
array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"
    ["args"]=>
    array(1) {
      [0] => &string(6) "friend"
    }
}
[1]=>
array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}