简单说一下断点调试的使用场景
- 当业务代码很复杂,想要知道每一步的变量及对应的值。
- 学习一个新框架,熟悉框架的执行流程
- 不确定代码会运行到哪一步(不知道在哪var_dump)
- 需要var_dump的地方太多,麻烦
进入正题:
1. 开启PHP的xdebug扩展
下载php版本对应的xdebug.dll文件到php扩展目录
修改php.ini配置文件,在末尾添加如下代码
[XDebug]
;这里修改为自己的php_xdebug.dll文件路径
zend_extension="D:\phpStudy\PHPTutorial\php\php-7.0.12-nts\ext\php_xdebug.dll"
;开启远程调试,必须开启
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port = 9000
;xdebug.remote_port和xdebug.idekey这两项如无特殊需求不需要设置,如果设置了需要配置phpstorm的对应参数为相同的值
修改完成后重启apache,打印phpinfo()看到如下信息则配置成功
注意:如果使用nginx且nginx占用了9000端口,则需要修改remote_port为其他值如9010.phpstorm的调试端口默认也是9000,所以如果remote_port!=9000则需要修改phpstorm的调试端口为相同的值。
2. 配置phpstorm
- 点击左上方的Edit Configurations,如下图
- 点击“+”号,选择PHP Web Page
- 在Name项输入你取的名字(如testxdebug),点击“...”并添加服务,如下图红框
4.在弹框中输入添加“+”号,再输入名称和项目的url,然后点确定。如图
3. 测试效果
1.添加断点,如下图中的红点
2.选择之前创建的服务, 把电话(监听)打开,然后点击爬虫
6.ide将会打开网页,地址为:
并且,成功进入调试
每次点击爬虫都是进入新的一次调试,XDEBUGSESSIONSTART的值都不一样
7.如果想调试该网站的其他页面,只需把
?XDEBUG_SESSION_START=xxxxx 追加到对应的网址上然后请求,就自动进入到单步调试了。
eg:http://www.test.com/xxxx/xxxx...
到这里,恭喜你已经会配置和使用断点调试了!