xdebug的使用
为什么要用?
方便联调: 和客户端一起联调,是die(); exit(); 会影响其他人员是使用。
关注数据变化: 正常情况下,我们在调试和开发时,更关注数据的变化。频繁断点、效率比较低。
简单: 之前的开发自己比较懒,一直没用,用起来发现很简单。
原理
运行xdebug需要客户端IDE(phpstorm)、远程服务器配合,首先是客户端配置好端口,发送debug请求,请求会通过浏览器或者IDE的http请求,携带特定的参数发送到服务端,服务端收到请求后,发现这是一个xdebug请求,则与IDE建立dpgp连接,当遇到断点时候,返回调试信息给IDE
服务器的IP是10.0.1.2,端口80上有HTTP
IDE位于未知IP上,因此xdebug.remote_connect_back设置为1
IDE侦听端口9000,因此xdebug.remote_port设置为9000
发出HTTP请求,Xdebug从HTTP头中检测IP地址
Xdebug连接到端口9000上检测到的IP(10.0.1.42)
调试运行,提供HTTP响应
流程
1. 安装xdebug扩展
https://xdebug.org/download.php
2. 远程环境配置
3. 配置deployment
4. Phpstorm Debug配置
5. 开启phpstorm 数据监听
6. 设置 debug session
debug session 的工具的目的是设置一个cookie, 让每次发送数据的时候都会携带这个 cookie, 从而识别监听.
6.1) 安装工具 https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc
6.2) 点击图标设置
6.3) 已经设置了cookie, Key 是 XDEBUG_SESSION
, 值是 PHPSTORM
7. 运行页面
其他调试方式
上面的模式有个缺点,插件是针对于一个标签页 快捷键: Mac: Ctrl+Shift+X Windows:Alt+Shift+X
内部模式
1. 设置 web 访问的服务器
2. 配置调试页面
我们这里创建的调试页面的类型是PHP Web Page
, 服务器选择的是刚才已经建立好的服务器
3. 运行测试页面
自动生成:XDEBUG_SESSION_START http://example.com/?XDEBUG_SESSION_START=13608
Fiddler工具调试
命令行
多人开发模式
https://derickrethans.nl/debugging-with-multiple-users.html 插件下载地址:http://code.activestate.com/komodo/remotedebugging/
其他
1. 查看兼容性
第一次运行的时候可以通过 phpstorm 自带的工具来检查配置的兼容性. Run > Web Server Debug Validation
校验代码 :https://gist.github.com/han8gui/231ba75c8989ffe6dfab3831c0dcd58a
2. debug 帮助面板说明
左侧 绿色三角形 : Resume Program
,表示將继续执行,直到下一个中断点停止。 红色方形 : Stop
,表示中断当前程序调试。
上方 第一个图形示 : Step Over
,跳过当前函数。 第二个图形示 : Step Into
,进入当前函数內部的程序(相当于观察程序一步一步执行)。 第三个图形示 : Force Step Into
,強制进入当前函数內部的程序。 第四个图形示 : Step Out
,跳出当前函数內部的程式。 第五个图形示 : Run to Cursor
,定位到当前光标。
参考文章
https://segmentfault.com/a/1190000011387666
其他问题
需要关闭防火墙
Last updated