xdebug是一个php扩展,官方地址:https://xdebug.org/index.php,用于帮助开发者调试代码,本文主要和大家分享php调试工具Xdebug详细使用教程,最新的2.6版本为列来讲解,希望能帮助到大家。
它具备这些功能:
代替php的错误提示:
在提示中加入配色以强调不同信息
大变量打印:
增强var_dump()、print_r()等打印函数的功能,在大变量打印时很有用,避免死机
最大递归保护:
可以设定最大递归次数限制,防止php卡死
函数调用追踪:
能追踪函数调用过程,显示传入和返回的值,内存用量等
代码覆盖分析:
可以找出代码运行时哪些行被执行了
垃圾回收分析:
在php执行垃圾回收时显示哪些变量被清理、多少内存被释放等信息
代码性能分析:
可以看出代码各部分的执行时间,找出代码运行效率的瓶颈
远程调试:
配合IDE工具进行远程断点调试,让你一步步追踪代码的执行,查看或设置运行中的各变量值,避免使用var_dump()、print_r()等函数,这也是xdebug最常被使用的功能,非常强大。
安装:
这里以如下环境来说明,其他环境请根据提示操作:
操作系统:Windows 10
php版本:php-7.1.13-nts(32 bit)
下载:https://xdebug.org/download.php
请根据自己的环境(php版本、是否线程安全、位宽等)选择适合的版本,这里笔者依据前文环境选择:
版本:Xdebug 2.6.0,PHP 7.1 VC14 (32 bit) 该版本在2018-01-29发布
将下载得到的文件php_xdebug-2.6.0-7.1-vc14-nts.dll放入php的ext目录中
修改php.ini文件,加入如下配置:
zend_extension="php_xdebug-2.6.0-7.1-vc14-nts.dll"
执行phpinfo(),如果已经显示了xdebug扩展则说明安装成功,如果没有请检测是否选对了版本
安装完成后要进行实际的使用还需要根据你的目的在php.ini文件中进行特定的配置,以下根据各功能,进行常用说明
开启Xdebug方式的错误提示:
只要启用了xdebug扩展那么该功能是默认开启的,将以xdebug的风格进行错误显示,如果想以原php的风格显示可以在配置文件中设置:xdebug.default_enable=0,注意该设置项并不是指关闭xdebug的所有功能
配置大变量的显示:
在有些程序中变量会很大,比如著名内容管理系统drupal8中的节点渲染数组,如果直接print_r那么可以将内存8G的I5计算机卡死,所以Xdebug提供了配置大变量打印配置以避免这种情况,配置以下配置项:
xdebug.var_display_max_children
整数,默认128,显示的数组子元素或对象属性的最大数量,不限制则设定为-1,远程调试时不受影响
xdebug.var_display_max_data
整数,默认512,显示字符串的最大长度,不限设置为-1,不影响远程调试
xdebug.var_display_max_depth
整数,默认3,显示数组或对象属性时的最大嵌套深度,最大1023,可以用-1指代这个最大数
最大递归保护:
设定以下配置项:
xdebug.max_nesting_level
整数,默认为:256,不限设置为-1,无限递归的保护机制,当递归调用达到该设定时程序被中断,注意此时不会出现任何错误提示,而是直接退出程序
函数调用追踪:
包括对象方法调用,该功能默认是关闭的,开启后将输出调用数据到一个文件,查看文件即可,配置如下(这里值设定为我们最常用的情况以便复制使用,更多见下文的配置说明):
xdebug.auto_trace=1
;开启追踪,默认是关闭的
xdebug.trace_output_dir="C:\root\xdebug\trace"
;调用追踪数据输出目录
xdebug.tr1本文来#源gaodai$ma#com搞$代*码*网
搞代gaodaima码
ace_output_name="yunke.%s.%u"
;追踪文件的文件名
xdebug.collect_params=4
;收集函数参数的形式
xdebug.collect_return=1
;是否收集函数返回值
xdebug.show_mem_delta=1
;显示内存详情
xdebug.trace_format=0
;追踪文件的格式
以上设置将为所有请求产生分析文件,调用追踪分析还可以采用变量触发的方式(可通过浏览器扩展自动完成,这也是推荐方法,见下),也就是在GET/POST 或cookie中设置变量名XDEBUG_TRACE,它的值是和以下设置项匹配的密钥,配置如下:
xdebug.auto_trace=0
;开启变量触发跟踪时自动跟踪需要关闭
xdebug.trace_enable_trigger=1
xdebug.trace_enable_trigger_value="yunke"
;这就是上述XDEBUG_TRACE变量的值
如访问网址:http://www.test.com/index.php?XDEBUG_TRACE=yunke,即可触发追踪文件的产生
这里"yunke"是一个密钥值,只有和配置文件匹配才能产生分析文件,默认为空字符
代码覆盖分析:
该功能可以让我们知道代码执行中哪些行被执行到了,通常用于单元测试,配置如下:
xdebug.coverage_enable=1
;代码覆盖分析开启
代码覆盖分析是通过在php代码中调用函数来进行的,过程如下,那将得到一个数组结果:
xdebug_start_code_coverage();//开启覆写
…//被分析的一些代码
var_dump(xdebug_get_code_coverage());//得到一个分析结果数组
垃圾回收分析:
该功能默认是关闭的,开启后将输出垃圾回收分析数据到一个文件,查看文件即可,配置如下(这里值设定为我们最常用的情况以便复制使用,更多见下文的配置说明):
xdebug.gc_stats_enable=1
;开启垃圾回收分析
xdebug.gc_stats_output_dir="C:\root\xdebug\gc"
;数据输出目录,默认是/tmp
xdebug.gc_stats_output_name=”gcstats.%s.%u”
;输出文件名,默认是: gcstats.%p