[PHP] Backtrace in fatal error?
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 General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Backtrace in fatal error?
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 General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Backtrace in fatal error?
I think you need a PHP extension to do this. XDebug works rather nicely for this. On 31/08/2010, at 8:49 PM, Paul Freeman 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 General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php --- Simon Welsh Admin of http://simon.geek.nz/ Who said Microsoft never created a bug-free program? The blue screen never, ever crashes! http://www.thinkgeek.com/brain/gimme.cgi?wid=81d520e5e -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Backtrace in fatal error?
On 31 August 2010 09:49, Paul Freeman freem...@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. -- 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
Re: [PHP] Backtrace in fatal error?
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 freem...@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
Re: [PHP] Backtrace in fatal error?
On 1 September 2010 13:38, freem...@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 freem...@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 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php