前言作为一款PHP调试工具,Xdebug提供了丰富的调试功能和配置,让你直观的看到PHP源码的步进和性能数据,以便优化PHP代码。使用phpstorm+xdebug调试php程序,借助IDE强大的监控功能,调试程序更加方便。为了提高我们的编码效率,var_dump、print_r等函数也可以提供相应的功能,但是自动化工具可以事半功倍。我将根据自己的使用情况介绍如何调试和配置。一种方式是使用外部设置的session,另一种方式是在phpstorm中配置页面入口,然后使用内置的monitor访问。原理是一样的。下面从原理说起讲解调试原理,配置调试环境1)配置xdebug这里使用的是最小配置,profile等功能没有配置[xdebug]zend_extension="/usr/local/opt/php70-xdebug/xdebug.so"xdebug.remote_enable=1#启用远程调试xdebug.remote_connect_back=1#忽略remote_host配置,不关注host配置,开发者用起来最舒服xdebug.remote_port=9050#监听端口注意这里默认的监听端口是9000,和php默认监听一样,注意尽量不要用9000,以免失败。2)设置phpstorm配置并启用监控。这是为了让phpstorm通过监听端口获取xdebug断点传输的数据。数据端口相同2.2)启用phpstorm数据监控并切换“开始监控PHP调试连接”按钮。3)在phpstorm中设置断点,点击行号右边的空白处,设置断点4)设置debugsessiondebugsession工具的作用是设置一个cookie,这样每次都会携带这个cookie发送时间数据,以便识别监控。4.1)安装工具安装chrome扩展Xdebughelper4.2)点击图标设置session,cookie已经设置,Key为XDEBUG_SESSION,value为PHPSTORM。我认为这里的价值是无关紧要的。对于phpstorm,可以监控。5)RunHere在页面上,我们可以看到断点处的输出内容项。另一种方法:内部调用这里的另一种方法的服务器配置方法和流程完全一样,只是第四和第五步不同。原理是在phpstorm中设置运行服务器,然后通过debug模式自动设置XDEBUG_SESSION,自动启动监控。内部调用:4)设置调试会话4.1)设置用于Web访问的服务器。比如我这里的本地域名是l.dailian。sour-lemon.com,我们需要配置一个本地服务器才能打开这个页面,我们先配置一个服务器。注意这里配置的域名是你本地开发环境的域名,端口号是本地开发使用的端口,我这里是l.dailian.sour-lemon.com和804.2)配置调试页面的类型我们这里创建的调试页面的主体是PHPWebApplication,服务端选择刚刚建立的服务端的内部调用:5)运行测试页面在这种情况下,上述2.2)启用phpstorm数据监控的步骤即可忽略,这里不需要开启这个监控。5.1)开始调试点击debug按钮,这里会自动打开一个页面,并传递一个唯一的ID(可能是进程ID)作为debug值打开的url地址为:http://l.dailian.sour-lemon.com/?XDEBUG_SESSION_START=13608,这里的值会发生变化。5.2)查看调试面板打开调试面板,会看到对应的监控idekey,和上一步设置的key一致,也和coo一样kie中设置的XDEBUG_SESSION的值是一样的。其他帮助1.检查兼容性。首次运行时,可以通过phpstorm自带的工具检查配置的兼容性。Run>WebServerDebugValidation2.调试帮助面板左侧是绿色三角:ResumeProgram,表示会一直执行到下一个断点。红色方块:停止,表示中断当前程序调试。上图第一张显示:StepOver,跳过当前函数。第二张图:StepInto,进入当前函数里面的程序(相当于观察程序一步步执行)。第三幅图:ForceStepInto,强制进入当前函数内部的程序。第四张图:StepOut,跳出当前函数里面的程序。第五个图形显示:RuntoCursor,定位到当前光标。FramedescriptionFrames:加载的文件列表Variables:可以观察所有全局变量和当前局部变量的值watches:可以添加新的变量,观察变量在程序执行过程中的变化。参考文章使用Xdebug和PhpStorm调试Laravel的零配置Web应用程序使用PHPStorm和Xdebug(一)
