0x01 Xdebug简介
Xdebug是一个开放源代码的PHP程序调试器
运行流程:
0x02 Xdebug配置
日志
xdebug.trace_output_dir: 日志追踪输出目录 xdebug.trace_output_name 日志文件名,xdebug提供了一系列的标识符,生成相应格式的文件名 xdebug.trace_options 记录添加到文件中方式:1=追加(如果存在该文件).0(default)=覆盖(如果存在该文件)
显示数据
**xdebug.collect_params 非零值 = 控制function的参数显示选项 0--------不显示 1--------参数类型,值(例如:array(9)). 2--------同1,只是在CLI模式下略微有区别 3--------所有变量内容 4--------所有变量内容和变量名 xdebug.collect_return 1--------显示function返回值. Default 0 不显示 -xdebug.collect_vars 1--------显示当前作用域使用了哪些变量,显示变量名,该选项不会记录变量的值 **xdebug.collect_ assignments 1--------添加一行显示变量赋值
日志追踪输出目录
xdebug.trace_format 0-------------------人可读 1-------------------机器可读 2-------------------html格式
行为
追踪方式有两种,一种是自动追踪,所有php脚本运行时,都会产生trace文件;另一种是触发方式追踪
xdebug.auto_trace 1---------------打开自动追踪 xdebug.trace_enable_trigger 注:该特性只有在2.2+版本才能设置 1------------------使用XDEGUG_TRACE GET/POST触发追踪,或者通过设置cookie XDEGUG_TRACE,为了避免每次请求时,都会生成相应trace追踪文件,你需要把auto_trace设置为0
0x03 xdebug调试记录
在需要调试的行上打上断点(点击一下行号后面的空白处即可,再点一次取消断点),需要说明的是当程序运行到该断点时,程序会停留在该行,但该行本身不会执行。自此可以查看程序运行到此处时所包含的所有数据信息。当然,查看信息功能相当于使用php中的var_dump。
快捷按钮:
第一个按钮:step over 步越
执行当前函数的下一步,如果有子函数,也不会进入,会一直执行到函数结束
第二个按钮:step into 步入
执行当前函数的下一步,如果有子函数,会从头到尾执行子函数,还原了程序执行的最详细的路线,从构造函数到结尾的每一步都会跳到。
第三个按钮:force step into
与step into 相同,执行当前函数的下一步,如果有子函数也会进入子函数,只不过不会从头到尾的还原函数执行的路线,会直接跳到子函数内第一步,构造函数等一些前置方法会忽略
第四个按钮:step out 步出
跳出当前执行的函数,跳到父函数的下一步。
第五个按钮:run to cursor
执行到下一个断点处
Xdebug的其他作用
很明显,有了xdebug我们不再需要在代码调试时对一些关键变量一个一个echo或var_dump了,而且我们可以使程序运行到断点时挂起,从而更加精确地锁定出bug的代码的位置。同时Xdebug具有追溯代码的跟踪回溯功能,这样在一些大型的程序的中,即使调用逻辑很复杂,我们也能顺蔓摸瓜一步步到达错误发生的地方。
除此之外,我们可以使用xdebug_time_index()来显示脚本运行时间;可以使用xdebug_memory_usage()来测定脚本占用内存;同时我们还可以查询xdebug的输出日志来查询程序运行的相关信息。
Xdebug自带了一个函数xdebug_time_index()来显示时间。