debug_backtrace(), или как получить стек вызова - PHP

2 июля 2010
Просмотров: 11556Обсудить
Рубрика: Программирование -> PHP

Часть из вас сталкивалась с этой функцией, часть нет. Но вспомнить о ней нужно всем. От дебага еще никто не уходил!

Функция возвращает стек вызова в обратном порядке в таком формате:

НазваниеТипОписание
function string

Название текущей функции (см. __FUNCTION__).

line integer

Номер текущей строки (см. __LINE__).

file string

Имя файла (см. __FILE__).

class string

Название класса (см. __CLASS__)

object object

Текущий обьект

type string

Тип вызова. Если вызов обычного метода - "->". Если вызван стаический метод - "::". В случае вызова функции ничего не вернется.

args array

Список аргументов.

Пример использования (взято с php.net)

// filename: /tmp/a.php
function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}
a_test('friend');
?>
// filename: /tmp/b.php
include_once '/tmp/a.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"
  }
}

Надеюсь, что все вы об этой функции знаете, но используете ее крайне редко (поскольку пишете код без ошибок и надобности в дебаге ;).

Описал ее, чтоб не забыть самому =)

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Метки: ,


Комментариев: 5
Подписаться на комментарии по RSS
  • #12010-10-21 в 19:08:11Артемий (анонимно)

    Спасибо!)grin


  • #22011-04-18 в 15:00:07Аноним (анонимно)

    Спасибо. Помогло!


  • #32011-07-19 в 09:57:04Аноним (анонимно)

    Ммм.. debug_print_backtrace()?


  • #42011-09-12 в 10:09:12Аноним (анонимно)

    "описал" это когда сам написал, рассмотрел и сделал, а когда скапипиздил с официальной документации, это называется скопипиздить с официальной документации и не как иначе.


  • #52011-09-12 в 11:35:30yaap

    @Аноним (анонимно)

    Под "описал" имелось в виду "разместил у себя в блоге".

    А так - да, вы правы, ничего нового, кроме как инфа из документации, нет.


Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)