工欲善其事必先利其器。如果你想看懂框架,如果你想快速找到代码中的疑难问题,你首先要学会单步调试跟踪代码。
之前一直都是使用zendstudio + zend debugger + Firefox调试PHP的,。可是zend debugger在windows下不支持高版本的PHP(好像是可以支持到5.2),后来开始使用phpstorm和xdebug调试。
安装PhpStorm
官方地址:https://www.jetbrains.com/phpstorm/
安装PHP Xdebug扩展
xdebug官网:
https://xdebug.org/
扩展下载地址:
http://pecl.php.net/package/xdebug
https://xdebug.org/download.php
如果你不能确定你需要下载哪个版本的扩展,你可以借助xdebug官方提供的工具,输入phpinfo即可获取需要下载的版本。
https://xdebug.org/wizard.php
修改PHP配置文件 php.ini
[Xdebug]
zend_extension=C:\webserver\server\php-5.6.9\ext\php_xdebug-2.3.3-5.6-vc11-x86_64.dll
;允许远程IDE调试
xdebug.remote_enable=on
;远程IDE所在HOST和PORT
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
;开启远程调试自动启动
xdebug.remote_autostart = Off
;可以是任意Key,这里设定为PHPSTORM
xdebug.idekey = "PHPSTORM"
;开启自动跟踪
xdebug.auto_trace = On
xdebug.trace_output_dir="C:\webserver\xdebug"
;把执行情况的分析文件写入到指定目录中
xdebug.profiler_enable=on
xdebug.profiler_output_dir="C:\webserver\xdebug"
这里你可以看到所有配置项的解释:
https://xdebug.org/docs/all_settings
输出phpinfo看下扩展是否安装成功。
配置PHPStorm
Ctrl+Alt+S 调出配置界面,输入xdebug搜索配置位置。
注意端口号是否和php.ini中设置的一致,默认为9000。
配置DBGP Proxy
安装firefox 调试插件
The easiest Xdebug
This extension for Firefox was built to make debugging with an IDE easier. You can find the extension at https://addons.mozilla.org/en-US/firefox/addon/the-easiest-xdebug/.
其中的原理你可以参看https://xdebug.org/docs/remote
调试PHP
在PHPStorm中创建项目,在代码中设置断点。点击phpstorm run>start listening或者右上角的小电话开启监听。进入需要调试的页面,点击火狐右上角的“臭虫”开始调试,你也可以在此点击关闭调试。
到此,你就可以愉快的进行断点调试跟踪代码了!
分析代码性能
你也可以利用WinCacheGrind或者QCacheGrind软件和xdebug生成的cachegrind.out文件分析PHP脚本的性能。
下载地址:
http://sourceforge.net/projects/wincachegrind/
http://sourceforge.net/projects/qcachegrindwin/
你也可以使用其他工具分析,参照这里:
https://xdebug.org/docs/profiler
参考资料
- xdebug帮助文档: https://xdebug.org/docs/
- IDE远程调试:https://xdebug.org/docs/remote
注意的坑
- 注意PHPstorm的版本和xdebug的版本
phpstorm能进入调试一直无法下一步,然后发现phpstorm版本太低2018.1.6发行的版本, 而xdebug是2019年发布的,然后我就选择了一个2018.1.6时间之前发布的xdebug就好了