Вопрос:

Как отключить PHP, отсекающий части длинных аргументов в трассировке стека исключений?

php exception exception-handling

3210 просмотра

2 ответа

7904 Репутация автора

Иногда такие вещи случаются:

#0 /some/path(1): Class_Name->exception_trigger()
#1 /some/other/path(5):  get_to('/some/long/path/tha...')

Как мне увидеть полные аргументы за все?

Автор: Aaron Yodaiken Источник Размещён: 14.08.2010 12:14

Ответы (2)


12 плюса

83864 Репутация автора

Решение

Вам придется заменить необработанный обработчик исключений. Пример:

function exception_handler($exception) {
    $i = 0;
    foreach ($exception->getTrace() as $frame) {
        echo sprintf("#%d %s(%d): %s(%s)\n",
            $i++, $frame["file"], $frame["line"],
            $frame["function"],
            implode(", ", array_map(
                function ($e) { return var_export($e, true); }, $frame["args"])));
    }
}

set_exception_handler('exception_handler');

Теперь вы получите что-то вроде:

# 0 /home/glopes/a.php(21): a («аргумент« ооооооооооооооооооооооооооооооооооооооооооооооооооооо »))
# 1 /home/glopes/a.php(24): b ()
Автор: Artefacto Размещён: 14.08.2010 02:10

4 плюса

9987 Репутация автора

Если вы используете xdebug, вы можете указать длину и количество переменных, которые он выводит.

Автор: cbednarski Размещён: 14.08.2010 02:19
Вопросы из категории :
32x32