当前位置: 首页 > 后端技术 > PHP

使用Xdebug进行远程调试

时间:2023-03-30 00:04:00 PHP

为什么要用它?联调方便:与客户端联调,die();出口();会影响其他人员的使用。关注数据变化:通常情况下,我们在调试和开发的过程中更关注数据的变化。断点频繁,效率低下。简单:之前开发偷懒,一直没有用到,但是发现用起来很简单。原理运行xdebug需要客户端IDE(phpstorm)和远程服务器的配合。首先,客户端配置端口并发送调试请求。请求会通过浏览器或IDE的http请求,将特定的参数发送给服务器,服务器接收。收到请求后发现这是一个xdebug请求,与IDE建立了dpgp连接。遇到断点时,返回调试信息给IDE服务器的IP为10.0.1.2,80端口的HTTPIDE位于未知IP,所以xdebug.remote_connect_back设置为1IDE监听9000端口,所以xdebug.remote_port设置为9000以发出HTTP请求,Xdebug从HTTP标头检测IP地址Xdebug连接到端口9000上检测到的IP(10.0.1.42)调试运行提供HTTP响应过程1.安装xdebug扩展https://xdebug.org/download.php2.远程环境配置zend_extension=xdebug.soxdebug.idekey=PHPSTORMxdebug.remote_connect_back=1//如果开启这个,后面的xdebug.remote_host参数xdebug会被忽略.remote_host=192.168.x.x//注意这里是客户端的ip<也就是IDE机器的ip,不是你的web服务器>xdebug.remote_enable=onxdebug.remote_port=9001//注意这里是客户端的端口<也就是IDE机器的ip,不是你的web服务器>xdebug.remote_handler=dbgpxdebug.auto_trace=1xdebug.remote_log=/tmp/xdebug.log3。配置部署4。Phpstorm调试配置5。开启phpstorm数据监控6.setdebugsessiondebugsessiontools目的是设置一个cookie,这样每次发送数据的时候都会带上这个cookie,以便识别监听。6.1)安装工具https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc6.2)点击图标设置6.3)已经设置cookie,Key为XDEBUG_SESSION,value为PHPSTORM7。运行页面其他调试方式的上述模式存在一个缺点。插件是针对tab页的快捷键:Mac:Ctrl+Shift+XWindows:Alt+Shift+X内部模式1.设置服务器为web访问2.配置调试页面我们这里创建的调试页面类型为PHP网页,服务器为刚刚建立的服务器3.运行测试页面自动生成:XDEBUG_SESSION_STARThttp://example.com/?XDEBUG_SESSION_START=13608Fiddler工具调试if(oSession.host=="xxxx"){varsCookie=oSession.oRequest["Cookie"]+';XDEBUG_SESSION=PHPSTORM;';oSession.oRequest.headers.Add("Cookie",sCookie);}命令行exportXDEBUG_CONFIG="idekey=PHPSTORM"phpmyscript.php多人开发模式https://derickrethans.nl/debugging-with-multiple-users.html插件下载地址:http://code.activestate.com/komodo/remotedebugging/Others1.检查兼容性第一次运行时,可以通过phpstorm自带的工具检查配置的兼容性。Run>WebServerDebugValidation验证码:https://gist.github.com/han8g...2.debug帮助面板左侧的绿色三角说明:ResumeProgram,表示会继续执行直到下一个中断点停止。红色方块:Stop,表示中断当前程序调试。上面第一张图显示:StepOver,跳过当前函数。第二张图:StepInto,进入当前函数内部的程序(相当于看程序一步步执行)。第三幅图:ForceStepInto,强制进入当前函数内部的程序。第四个图形显示:StepOut,跳出当前函数里面的程序。第五个图形显示:RuntoCursor,定位到当前光标。参考文章https://segmentfault.com/a/1190000011387666