最近打算对一些常见的php代码进行源码审计,当然良好的调试环境也是少不了的,在配置PhpStorm+xdebug的时候踩了些坑,遂记录。
1.0:下载对应版本的XDEBUG
xdebug对php版本信息有着较高的要求,首先得通过当前php的版本信息下载对应的xdebug插件。
在本地环境查看当前phpinfo:
我们直接ctrl+a全选复制,打开https://xdebug.org/wizard
[]
将所有内容粘贴到框内并且点击Analyse my phpinfo() output
下载对应的xdebug,复制小标号3的zend_extension = C:\php\ext\php_xdebug-3.0.2-7.2-vc15-nts.dll(注,每个人不一样)
[]
1.1:更改php.ini配置文件
打开对应目录的php.ini,我这里是D:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.ini,然后将刚刚复制的加上如下对应配置即可。
1 | #刚刚复制的xdebug所在路径 |
然后重启apache服务器,打开phpstorm
1.2:对PhpStorm进行配置
看到对应的setting->php->Debug更改Debug port为刚刚配置文件种的端口,这里是9100
[]
看到对应的setting->php->Debug->DBGP Proxy更改对应的IDEKEY(配置文件中设置的Key),HOST,Port
[]
看到对应的setting->php->Servers添加一个服务,如图所示
[]
到此就设置完毕了,有时候可能会遇到一些报错,是因为现在的xdebug是3.X版本的,网上很多教程是2.X版本的,配置ejike文件中很多的变量名都进行了更新,导致报错。所以只需要将配置文件中xdebug的参数使用3.X版本的即可。本文章中之前给的配置参数就是3.X标准的,无需修改。
1.3:用法介绍
介绍一下调试按钮所对应的功能
[]
- 第一个按钮:step over 步越
执行当前函数的下一步,如果有子函数,也不会进入,会一直执行到函数结束
- 第二个按钮:step into 步入
执行当前函数的下一步,如果有子函数,会从头到尾执行子函数,还原了程序执行的最详细的路线,从构造函数到结尾的每一步都会跳到。
- 第三个按钮:force step into
与step into 相同,执行当前函数的下一步,如果有子函数也会进入子函数,只不过不会从头到尾的还原函数执行的路线,会直接跳到子函数内第一步,构造函数等一些前置方法会忽略
- 第四个按钮:step out 步出
跳出当前执行的函数,跳到父函数的下一步。
- 第五个按钮:run to cursor
执行到下一个断点处