PHP查看堆栈信息,php获取(打印)调试堆栈

在实际项目开发中需要获取框架底层异常的时候(因业务代码较多,不知道是哪里调用底层出问题的时候),需要在框架底层获取抛出异常而定位到业务代码调用的时候问题。

主要通过 debug_backtrace() 函数获取调用 堆栈和执行流程。

//主函数调用

child_func();

//调用函数parent_func

function child_func() {

parent_func();

}

//调用grandparent_func

function parent_func() {

grandparent_func();

}

//打印调用堆栈

function grandparent_func() {

var_dump(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));

}

打印结果:

array(3) {

[0]=>

array(3) {

["file"]=>

string(37) "/Users/user/Desktop/php-cli/index.php"

["line"]=>

int(13)

["function"]=>

string(16) "grandparent_func"

}

[1]=>

array(3) {

["file"]=>

string(37) "/Users/user/Desktop/php-cli/index.php"

["line"]=>

int(8)

["function"]=>

string(11) "parent_func"

}

[2]=>

array(3) {

["file"]=>

string(37) "/Users/user/Desktop/php-cli/index.php"

["line"]=>

int(4)

["function"]=>

string(10) "child_func"

}

}

该函数返回一个 array 打印栈 从深到浅 。。从底层往调用层走。

实际应用:

在 easyswoole 框架中 做umail 邮件群发统计任务的时候,使用的mysql 的orm 连接池出现 2002 异常的时候,由于业务代码比较复杂,执行事务包含的sql语句比较多。 不知道是那个sql调用出现的问题。 后面通过在框架 orm底层源码中 找到抛出异常的位置。 通过 debug_backtrace 函数找到调用的sql。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值