介绍几个高级PHP调试函数(debug_zval_dump和debug_backtrace)
1.debug_zval_dump(),它与var_dump()的区别就是它新增了一个值refcount,即记录变量被引用的次数。同时它还可以打印几个变量。
如果你连引用计数器都不懂的话,请阅读:PHP垃圾回收机制引用计数器概念
- <?php
- $a = "www.phpddt.com";
- $b = &$a;
- //如果你安装了xdebug的话可以用xdebug_debug_zval()
- xdebug_debug_zval( 'a' ); //refcount=2, is_ref=0
- //debug_zval_dump() 函数只输出了 php 内部实现的引用计数机制,
- //如果程序中使用 & 取地址符 不被算在内,同样它也没有输出is_ref 的值
- debug_zval_dump($a); //refcount(3)
结果如下:
a:
(refcount=2, is_ref=1),
string 'www.phpddt.com' (length=14)
string(14) "www.phpddt.com" refcount(1)
2.debug_print_backtrace() debug_backtrace() 只是前者直接打印出来了而已。查看整个程序的调用栈,用来查看瞬间函数调用栈,方便查错。
看看手册上这个例子:
- <?php
- function a() {
- b();
- }
- function b() {
- c();
- }
- function c(){
- debug_print_backtrace();
- }
- a();
- ?>
结果如下:
#0 c() called at [E:\www\test\debug.php:6]
#1 b() called at [E:\www\test\debug.php:3]
#2 a() called at [E:\www\test\debug.php:11]
这里只是简单测试,后期会贴出实战教程,这些跟踪和调试函数是绝对的利器。

浙公网安备 33010602011771号