Re: Backtrace in fatal error?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1 September 2010 13:38,  <freeman3@xxxxxxxxxx> wrote:
> Thanks!
> I didn't notice the register_shutdown_function function.
> But it executes always I want to run it only to track fatal error. Also I
> can't get the backtrace properly:( I can't use 5.3 so I guess it works
> differently in 5.2
>
> Richard Quadling wrote:
>
>> On 31 August 2010 09:49, Paul Freeman <freeman3@xxxxxxxxxx> wrote:
>>> When fatal error occurs is it possible to output also the backtrace in
>>> the error log? The simple error message with file line only is quite
>>> useless...
>>
>> <?php
>> namespace baz;
>>
>> set_error_handler(
>>     function($ErrNo, $ErrStr, $ErrFile, $ErrLine, $ErrContext){
>>         echo 'An error occurred.', PHP_EOL;
>>         var_export(debug_backtrace(true));
>>
>>         // Allow PHP to continue executing.
>>         return false;
>>     },
>>     -1
>> );
>>
>> register_shutdown_function(
>>     function(){
>>         echo 'We died a terrible death.';
>>         var_export(debug_backtrace(true));
>>     }
>> );
>>
>> function bar() {
>>     echo 'In ', __FUNCTION__, PHP_EOL;
>>     echo 1 / 0; // Divide by zero warning.
>>     foo();
>> }
>>
>> function foo() {
>>     echo 'In ', __FUNCTION__, PHP_EOL;
>>     $a = \SNAFU; // Fatal error
>> }
>>
>> bar();
>> ?>
>> outputs ...
>>
>> In baz\bar
>> An error occurred.
>> array (
>>   0 =>
>>   array (
>>     'file' => 'Z:\\bad.php',
>>     'line' => 24,
>>     'function' => 'baz\\{closure}',
>>     'args' =>
>>     array (
>>       0 => 2,
>>       1 => 'Division by zero',
>>       2 => 'Z:\\bad.php',
>>       3 => 24,
>>       4 =>
>>       array (
>>       ),
>>     ),
>>   ),
>>   1 =>
>>   array (
>>     'file' => 'Z:\\bad.php',
>>     'line' => 33,
>>     'function' => 'baz\\bar',
>>     'args' =>
>>     array (
>>     ),
>>   ),
>> )
>> Warning: Division by zero in Z:\bad.php on line 24
>> In baz\foo
>>
>> Fatal error: Undefined constant 'SNAFU' in Z:\bad.php on line 30
>> We died a terrible death.array (
>>   0 =>
>>   array (
>>     'function' => 'baz\\{closure}',
>>     'args' =>
>>     array (
>>     ),
>>   ),
>> )
>>
>> So, it looks like extension or a core mod only.
>>
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

No. I think you've missed the point. Neither set_error_handler() or
register_shutdown_function() report the fatal stack.

This would need to be in an extension or a mod to the core code.

Userland code can't access it.

The stack trace shown in the shutdown function is just the shutdown
function, not why there is a shutdown.

-- 
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux