debug_print_backtrace();
会在页面直接输出。可以开启缓冲期
1 2 3 4 5 6 7 8 9 10
| ob_start();开启缓冲区 ob_flush();缓冲器清除 ob_get_contents();获取缓冲区内容 ob_end_clean();缓冲器清除 这个函数不会输出内部缓冲区的内容而是把它删除! function getBacktrace() { ob_start(); debug_print_backtrace(); return ob_get_clean(); }
|
调用这个函数取得错误堆栈,然后使用file_put_contents('log_path', FILE_APPEND);
写入日志文件。
debug_backtrace();
会返回一个数组,支持自己进行logger记录。
若需进行堆栈信息自行输出。可使用下列自定义的函数
1 2 3 4 5 6 7 8 9 10 11 12 13
| private function print_stack_trace() { $array = debug_backtrace(); unset($array[0]); foreach($array as $key=>$row) { $file = isset($row['file']) ? $row['file'].' : ' : '' ; $line = isset($row['line']) ? $row['line'].' 行,调用方法 ' : ''; $function = isset($row['function']) ? $row['function'] :''; Logger::notice($file.$line.$function); } return true ; }
|
debug_zval_dump();
该函数与var_dump()
的区别是它新增了一个值refcount
,及记录变量被引用的次数。同时它还可以打印几个变量。
php垃圾回收机制引用计数器概念:
http://www.phpddt.com/php/gc-refcounting-basics.html
1 2 3 4 5 6
| xdebug_debug_zval();
refcount=2,is_ref=0 debug_zval_dump();
refcount(3)
|