工作原理
xdebug嵌入在服务器上的php中作为debug客户端,IDE作为debug服务端。交互如下:
单独开发者/固定机器调试
如图IDEIP为10.0.1.42并监听9000端口,配套的对debug客户端设置
|
|
这种情况下xdebug只会和指定的主机端口通信
多个开发者/非固定机器调试
如果是多开发者调试就不能配置固定的host,通过设置xdebug.remote_connnect_back
,xdebug将从http头中检测请求ip作为remote_host
xdebug如何识别请求需要进行debug
当检测到以下情况xdebug会进行建立调试
1.在GET/POST参数中增加XDEBUG_SESSION_START
2.在请求头cookies中增加XDEBUG_SESSION
字段
所以我们可以在url后手动指定XDEBUG_SESSION_START
或由浏览器插件添加XDEBUG_SESSION_START
开启调试
使用场景
1.命令行调试
2.远程调试
对于远端存在防火墙的情况,可以通过ssh 隧道方式虚拟出端口进行通信
IDEKEY 用于区分不同项目
配置
1. 在配置文件中添加以下配置
[xdebug]
zend_extension="/usr/local/opt/php55-xdebug/xdebug.so" //内部填写你的扩展地址
xdebug.remote_enable = 1 //开启remote debug
xdebug.remote_connect_back = 1 //多人条情况,host从HTTP请求header中获取
xdebug.remote_port = 10000 //远程主机xdebug数据接收端口
xdebug.max_nesting_level = 1000 //保护机制,函数最大层级是1000,超过后脚本将中止
使用技巧
表达式计算器
option+F8打开表达式计算器输入表达式返回结果,例如 $a $a+1 getPostId() isAdmin()等
条件断点
设置方法
1 在断点上右键,设定condition
2 shift+command+F8,设定condition
FAQ
1.伪静态的url记得加上QSA参数,否则XDEBUG_SESSION_START参数将被抛弃
QSA表示?后参数不舍弃一同提交