Генерирует обратную трассировку вызовов функций

# debug_backtrace

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

debug_backtrace — Генерирует обратную трассировку вызовов функций

### Описание

function debug_backtrace(int `$options` = `DEBUG_BACKTRACE_PROVIDE_OBJECT`, int `$limit` = 0): array

Функция debug_backtrace() генерирует обратный стек вызовов PHP-функций.

### Список параметров

`options`

  Параметр принимает битовую маску из следующих опций:

  Опции функции debug_backtrace()
  DEBUG_BACKTRACE_PROVIDE_OBJECT | Опция устанавливает бит, который определяет, заполнять ли ключ "object" в выходном массиве.
  DEBUG_BACKTRACE_IGNORE_ARGS | Опция устанавливает бит, который определяет, исключать ли ключ "args" из выходного массива и вместе с ним аргументы функций и методов, чтобы уменьшить расход памяти.

  > Замечание:

  > Объединение опций даёт четыре возможные комбинации:

  > Комбинации опций функции debug_backtrace()
  > `debug_backtrace()` | Заполняются оба ключа.
  > `debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT)`
  > `debug_backtrace(~DEBUG_BACKTRACE_PROVIDE_OBJECT)` | Не включается ключ `"object"` и заполняется ключ `"args"`.
  > `debug_backtrace(0)`
  > `debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)` | Опускаются оба ключа `"object"` и `"args"`.
  > `debug_backtrace(~DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS)`
  > `debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS)` | Заполняется ключ `"object"` и опускается ключ `"args"`.

`limit`

  Параметр ограничивает количество кадров стека в выходном массиве. Со значением по умолчанию — `limit`=`0` — возвращается весь стек вызовов функций.

### Возвращаемые значения

Функция возвращает массив вложенных ассоциативных массивов (array). Следующая таблица приводит список возможных элементов выходного массива:

Возможные элементы массивов в результатах функции debug_backtrace()
Имя | Тип | Описание
--- | --- | ---
function | string | Название текущей функции. Смотрите также описание константы __FUNCTION__.
line | int | Текущий номер строки. Смотрите также описание константы __LINE__.
file | string | Название текущего файла. Смотрите также описание константы __FILE__.
class | string | Название текущего класса. Смотрите также описание константы __CLASS__.
object | object | Текущий объект, если задан флаг `DEBUG_BACKTRACE_PROVIDE_OBJECT`.
type | string | Текущий тип вызова функции. При вызове метода объекта функция возвращает значение "->". При вызове статического метода класса возвращается "::". При вызове функции ничего не возвращается.
args | array | При вызове этой функции внутри другой функции элементы с этим ключом содержат списки аргументов функций. При вызове внутри включаемого файла элемент содержит названия включённых файлов. За исключением случая, когда задан флаг `DEBUG_BACKTRACE_IGNORE_ARGS`.

### Примеры

Пример #1 Пример генерации обратной трассировки вызовов функцией debug_backtrace()

    <?php

    // Файл: /tmp/a.php
    function a_test($str)
    {
        echo "\nПривет, $str";
        var_dump(debug_backtrace());
    }

    a_test('друг');

    ?>

    <?php

    // Файл: /tmp/b.php
    include_once '/tmp/a.php';

    ?>

При выполнении файла /tmp/b.php PHP выведет результат наподобие такого:

    Привет, друг
    array(2) {
    [0]=>
    array(4) {
        ["file"] => string(10) "/tmp/a.php"
        ["line"] => int(10)
        ["function"] => string(6) "a_test"
        ["args"]=>
        array(1) {
          [0] => &string(8) "друг"
        }
    }
    [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"
      }
    }

### Смотрите также

- trigger_error() - Генерирует предупреждение, уведомление или сообщение об ошибке на уровне пользователя
- debug_print_backtrace() - Выводит обратную трассировку вызовов функций

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open