1. 前言
该怎么强调调试的重要性呢?我们生病的时候,要去看医生,医生会通过各种仪器对我们进行检查,定位病因,然后给我们治疗。程序也会生病,生病的时候,作为医生(开发者)的我们,就要通过各种办法定位bug,然后修改代码。定位bug并且修改代码的过程,就是调试。
最简单直接的调试办法是摘出需要调试的部分,放入 main.php 中,然后运行脚本:php main.php
前提是调试环境要安装好php,检查方法:php -v
但是,这种方法并不适合项目的调试,因为项目中涉及到很多上下文,模拟起来会比较麻烦。这时候就需要调试工具出场了。
PHP的调试工具有很多,本文记录一下Xdebug的使用方法。配合使用的集成环境为laragon-1.0,IDE为PhpStorm-2016.2.1。
2. 启用Xdebug
1、启动laragon后,任务栏右键laragon图标,定位到PHP,然后单击php.ini。(或者直接到laragon安装目录寻找php.ini,然后打开它)
2、找到[XDebug],然后修改如下:
1 | [XDebug] |
3、访问http://localhost
,查看phpinfo。
4、在网页中Ctrl+F,搜索“xdebug”,如果找到了xdebug的配置信息,则证明xdebug启用成功。
3. PhpStorm配置
1、打开phpstorm,File,Settings。
2、搜索“debug”,可以看到PHP下面的Debug,单击Debug。
3、在xdebug栏,Debug port默认端口为9000,一般不需要修改。同时,三个选项全部打钩。
4、展开Debug,单击DBGp Proxy,填入IDE key为PHPSTORM
,Host为localhost
,Port为80
。单击OK,退出设置。
4. Debug配置
1、View,Toolbar,显示工具栏。
2、View,Tool Windows,Project,显示项目结构。
3、单击工具栏向下的小三角,Edit Configurations。
4、在新打开的Run/Debug Configurations窗口中,单击左上角加号,选择PHP Web Application。
5、右侧Server配置为本地Web服务器。
5. 开始调试
1、在PhpStorm中,单击代码左侧插入断点。
2、单击导航栏的电话,然后单击导航栏中的虫子,即可打开默认浏览器进入调试。
3、网页卡住,PhpStorm自动定位到断点处。
4、此时,我们就可以根据PhpStorm提供的按钮进行需要的调试。
6. XDEBUG_SESSION_START
在调试时,郝同学发现一个神奇的问题:
假设默认浏览器是chrome,那么在chrome中访问接口,PhpStorm会自动定位到断点处。
但是,如果这时使用firefox或postman访问同样的接口,则无法定位到断点处。
解决办法:
郝同学注意到,在PhpStorm打开默认浏览器时,url中带有参数,例如:http://www.dsjyw.net/?XDEBUG_SESSION_START=10218
在firefox和postman中的接口地址后也加上XDEBUG_SESSION_START=10218
,成功跳转到断点,问题解决。