xdebug安装
xdebug官网
Linux & Macs
1
pecl install xdebug
修改php.ini文件
1
zend_extension="/xxx/xxx/xdebug.so"
windows
下载对应版本修改php.ini文件
1
zend_extension="/xxx/xxx/xdebug.dll"
xdebug配置
远程调试
- boolean xdebug.auto_trace = false
启用改配置,将在脚本调用前启用追踪。cli模式下需要启用改配置,以开启追踪。
- string xdebug.remote_addr_header = “”
配置header与xdebug.remote_connect_back 一起使用
- boolean xdebug.remote_connect_back = false
检查 $_SERVER 数组中变量
- boolean xdebug.remote_autostart = false
启用改配置,xdebug将始终尝试远程调试会话开始
- integer xdebug.remote_cookie_expire_time = 3600
会话保持时间
- boolean xdebug.remote_enable = false
是否连接一个远程调试客户端
- string xdebug.remote_handler = dbgp
调试协议,目前仅支持dbgp
- string xdebug.remote_host = localhost
调试客户端地址
- integer xdebug.remote_port = 9000
调试客户端监听端口
性能分析
- integer xdebug.profiler_aggregate = 0
设置值为1,开启聚合统计
- integer xdebug.profiler_append = 0
设置值为1,文件不会被覆盖
- integer xdebug.profiler_enable = 0
设置值为1,开起性能分析
- integer xdebug.profiler_enable_trigger = 0
设置值为1,开起性能触发器
- string xdebug.profiler_enable_trigger_value = “”
触发器匹配的值
- string xdebug.profiler_output_dir = /tmp
分析文件输出的文件目录
- string xdebug.profiler_output_name = cachegrind.out.%p
文件名称
更多及详情配置请参考文档
基本原理
如果使用phpstorm,配置dbgp proxy
在php.ini配置xdebug remote信息
开启了xdebug.auto_trace配置的话,可以不添加触发方式(如谷歌浏览器插件xdebug-helper,在cookie中添加XDEBUG_*),只需要在ide中添加断点即可,这种方式也适用调试CLI方式运行的脚本。
zendvm检测开启了xdebug,会判断是否需要触发条件,有触发条件,连接远程调试客户端,判断是否有断点,有断点则停止在断点处,调试客户端发出指令(执行下一行代码或者跳过函数等)继续执行。