Re: Backtrace in fatal error?

From: Date: Wed, 01 Sep 2010 12:46:05 +0000
Subject: Re: Backtrace in fatal error?
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-307804@lists.php.net to get a copy of this message
On 1 September 2010 13:38, <freeman3@centrum.cz> 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@centrum.cz> 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

« previous php.general (#307804) next »