Zihao

Make small but daily progress

0%

PHP调试函数debug_backtrace

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)

欢迎关注我的其它发布渠道