php问题跟踪,PHP调试之回溯跟踪

前言

在我们调试程序过程中,往往可能会出现需要回溯跟踪一个方法,这里我就介绍两个比较不错的PHP函数,也是我经常使用的。

内容

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

debug_backtrace — 产生一条回溯跟踪(backtrace)

(PHP 5, PHP 7)

debug_print_backtrace — 打印一条回溯。

这两个看起来有点相似,其实功能也是差不多的,下面我就以一个简单的例子向大家演示下他们的使用。

实例

/**

* PHP回溯

* @author chenyanphp@qq.com

*/

header("Content-Type:text/html;charset=utf-8");

/**

*

* 调试函数

* @param $content

*/

function dump($content)

{

echo '

';

var_dump($content);

echo '

';

}

/**

* Class A

*/

class A

{

public function say()

{

// 这里打印回溯内容

dump(debug_backtrace());

// 调用本身方法打印

debug_print_backtrace();

echo '
';

echo 'Hello World!';

}

}

/**

* Class B

*/

class B

{

public function sayB(A $obj)

{

$obj->say();

}

}

/**

* 测试结果

*/

$a = new A();

$b = new B();

$b->sayB($a);

下面是运行结果:

array(2) {

[0]=>

array(7) {

["file"]=>

string(29) "D:\phpStudy\WWW\test\test.php"

["line"]=>

int(43)

["function"]=>

string(3) "say"

["class"]=>

string(1) "A"

["object"]=>

object(A)#1 (0) {

}

["type"]=>

string(2) "->"

["args"]=>

array(0) {

}

}

[1]=>

array(7) {

["file"]=>

string(29) "D:\phpStudy\WWW\test\test.php"

["line"]=>

int(52)

["function"]=>

string(4) "sayB"

["class"]=>

string(1) "B"

["object"]=>

object(B)#2 (0) {

}

["type"]=>

string(2) "->"

["args"]=>

array(1) {

[0]=>

object(A)#1 (0) {

}

}

}

}

#0 A->say() called at [D:\phpStudy\WWW\test\test.php:43] #1 B->sayB(A Object ()) called at [D:\phpStudy\WWW\test\test.php:52]

Hello World!

结合代码不难看出,他们着重返回结果集,拆分结构;另一个着重按调用顺序打印出回溯跟踪。

总结

内容就这么多,结果一目了然,其他自己测试下就明了了。

PHP有些方法还是挺不错的,大家平时可以多看看手册。

下面放了他们两的官方链接,有兴趣的可以点击详细看看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值