Как я могу получить PHP, чтобы произвести возврат на ошибки? - PullRequest
48 голосов
/ 21 июля 2009

Попытка отладки PHP с использованием сообщений об ошибках по умолчанию только для текущей строки ужасна. Как я могу заставить PHP генерировать обратную трассировку (трассировку стека) при возникновении ошибок?

Ответы [ 11 ]

0 голосов
/ 04 ноября 2012

PHP DeBugger также выполняет обратную трассировку, аналогичную PHP Error, с большим количеством опций.
Если вы хотите, вы можете легко сделать свой собственный с set_error_handler и debug_backtrace

set_error_handler ($error_handler, error_reporting);
/**
 * @var int $errno the error number
 * @var string $errstr the error message
 * @var string $errfile the error file
 * @var int $errline the line of the error
 */
$error_handler = function($errno, $errstr, $errfile, $errline){
    $trace = debug_backtrace();
    array_shift($backtrace);//remove the stack about this handler
    foreach($trace as $k => $v){
        //parse your backtrace
    }
}

Также обратите внимание, что для внутренних стеков в backtrace некоторые ключи не будут установлены. Обязательно проверьте, существует ли ключ, прежде чем что-то делать с ним, если у вас есть все ошибки:)

...