我目前遇到的最让我称赞的debug方式是:xdebug的

  1. xdebug_start_trace();
  2. /* 业务代码 */
  3. xdebug_stop_trace();

他解决了我长久以来一个代码调试问题:比如有以下几个场景:1、一个有几百行的函数,里面有很多return,现在函数异常返回了,但是我不知道是从哪一行返回的,这时候呢,我一般的做法都是每一行echo();die();太费事了。2、接触一个新的框架,代码执行出现异常,怎么办呢,肯定也是一行一行的echo();die();3、想学习一个新框架,想知道代码的执行轨迹:执行了哪些类、调用了哪些类的方法,等等。现在呢,xdebug的代码跟踪,能帮我们轻松解决上面的问题。xdebug的安装(网上我看到了很多的都是在说xdebug、phpstorm、chrome咋配合起来远程调试,搞得大家好像觉得xdebug用起来那么费事,那么高级,其实没必要):1、安装php xdebug扩展(不再细说)2、配置:这里只讲代码跟踪相关的配置:cat /etc/php.d/xdebug.ini
extension=/usr/lib64/php/modules/xdebug.so
;代码跟踪日志文件位置,注意要先新建这个traces目录,并设置777
xdebug.trace_output_dir = /tmp/traces
;代码跟踪日志文件格式
xdebug.trace_output_name = trace.%c.%p
;trace中显示函数的参数值,这个很有用,待会细说
xdebug.collect_params = 4
xdebug.collect_includes = On
xdebug.collect_return = On
xdebug.show_mem_delta = On
安装好之后,代码执行明细(trace),就存放在/tmp/traces目录下了:

我截取一段trace日志,大家看下,就能感知到这个用法的方便了:

1、显示了参数的值:就这一点,我想就会节省我们phper很多的调试时间(默认不显示参数值,只显示调用的函数。需要添加xdebug.collect_params这个配置)2、显示了代码的执行轨迹。类似于c语言的单步调试吧。就这些了,反正用了xdebug,我是觉得debug的时候节省了大量时间,分享给大家,希望对你们也有帮助。

作者:许胜斌
链接:https://www.zhihu.com/question/20348619/answer/101893104
参考:https://xdebug.org/docs/all_settings#show_local_vars

分类: web

标签:   php   xdebug