php 打印error trace

对于php的Exception,可以通过getTraceAsString获得错误栈。

 

而对于error则应该如下:

 

function x()	
	$x = debug_backtrace();
	//remove stack of this function
	array_shift($x);
	$i = 0;
	$xstr = '';
	foreach ($trace as $x) {
		//TODO need check exists args
		$args = $x['args'];
		if (!$args) {
			$argstr = '';
		} else {
			$argstr = '';
			$first = true;
			foreach ($args as $arg) {
				if (!$first) {
					$argstr .= ',';					
				}
				$first = false;
				if (is_object($arg)) {
					$argstr .= 'Object[' . get_class($arg) . ']';
				}
				elseif (is_array($arg)) {
					$argstr .= 'Array';
				} else {
					$argstr .= $arg;
				}
			}
		}
		$xstr .= "[#$i] {$x['file']}({$x['line']}) {$x['function']} ($argstr)" . PHP_EOL;
		$i++;
	}
	
	return $xstr;
}

 

 

参见:

http://jarofgreen.co.uk/2011/02/more-php-error-handling-tips/


Total views.

© 2013 - 2024. All rights reserved.

Powered by Hydejack v6.6.1