debug_backtrace

Generates a backtrace

&reftitle.description; `array` `debug_backtrace` `int` `options` DEBUG_BACKTRACE_PROVIDE_OBJECT `int` `limit` 0

`debug_backtrace` generates a PHP backtrace.

&reftitle.parameters;

`options`

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

  ## `debug_backtrace` 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.

  Before 5.3.6, the only values recognized are &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.

&reftitle.returnvalues;

Returns an array of associative `array`s. The possible returned elements are as follows:

## Possible returned elements from `debug_backtrace`

&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).

&reftitle.changelog;

&Version; | &Description;
5.4.0 | Added the optional parameter `limit`.
5.3.6 | The parameter `provide_object` changed to `options` and additional option `DEBUG_BACKTRACE_IGNORE_ARGS` is added.
5.2.5 | Added the optional parameter `provide_object`.
5.1.1 | Added the current `object` as a possible return element.

&reftitle.examples;

### `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"
      }
    }

&reftitle.seealso;

- `trigger_error`
- `debug_print_backtrace`