长沙网站开发_高级PHP调试函数

发布日期:2016-09-27 08:04

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]

以上信息由长沙网站建设--长沙蒲公英网络收集与整理,禁止用于任何商业行为