前言:
php代码在调试时,经常是print_r或者var_dump来断点,但是当项目较为复杂的情况下,这么做效率就非常低下了,断点调试就非常好的解决了这个问题。一开始可能不太适应断点调试,但是当习惯之后,越用越舒服。
注:以下是在windows7+apache环境
一、XDebug安装
1、检测本地php环境是否安装了Xdebug
在本地输出phpinfo();
搜索Xdebug;如下图:
如果没有安装,安装操作Xdebug如下:
将phpinfo();的信息全部输入网址:http://xdebug.org/wizard.php中的框,得到适配的xdebug版本,按照下图中操作进行。
2、安装好Xdebug之后,配置本地的php.ini。添加配置如下,如需添加其他Xdebug配置,可以查看phpinfo中xdebug配置,根据情况自己添加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[XDebug] ;DLL文件目录 zend_extension="c:/xampp/php/ext/php_xdebug-2.5.5-5.6-vc11.dll" ;IDE KEY xdebug.idekey="PHPSTORM" ;远程调试功能,必须 xdebug.remote_enable=1 xdebug.remote_port="9000" xdebug.remote_mode="req" xdebug.remote_handler="dbgp" ;如果是外网ip,且能直接访问端口可实现远程调试功能 xdebug.remote_host="192.168.0.1" ;开启跟踪回溯功能 xdebug.auto_trace=0 xdebug.trace_enable_trigger=1 xdebug.trace_output_dir="C:\php-xdebug-trace" xdebug.trace_enable_trigger_value="XDEBUG_TRACE" ;记录每个函数的返回值 xdebug.collect_return=1 ;记录profile记录功能 xdebug.profiler_enable=1 xdebug.profiler_enable_trigger=1 xdebug.profiler_enable_trigger_value="XDEBUG_PFOFILER" xdebug.profiler_output_dir="c:\php-xdebug" |
配置参数解析:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Xdebug] ;xdebug配置 zend_extension="e:/php/ext/php_xdebug-2.2.1-5.4-vc9.dll" ;载入Xdebug xdebug.profiler_enable=on xdebug.trace_output_dir="e:/xdebug-log" ;xdebug 的数据文件目录 xdebug.profiler_output_dir="e:/xdebug-log" ;xdebug 的数据文件目录 xdebug.auto_trace = On ;开启自动跟踪 xdebug.show_exception_trace = On ;开启异常跟踪 xdebug.remote_autostart = Off ;开启远程调试自动启动 xdebug.remote_enable = On ;开启远程调试 xdebug.remote_handler=dbgp ;用于zend studio远程调试的应用层通信协议 xdebug.remote_host=127.0.0.1 ;允许连接的zend studio的IP地址 xdebug.remote_port=9000 ;反向连接zend studio使用的端口 xdebug.collect_vars = On ;收集变量 xdebug.collect_return = On ;收集返回值 xdebug.collect_params = On ;收集参数 xdebugbug.max_nesting_level = 10000 ;如果设得太小,函数中有递归调用自身次数太多时会报超过最大嵌套数错 |
二、PHPStorm配置
1、Ctrl+Alt+S快捷键打开设置,搜索xdebug,其中的Debug port确保不被其他应用占用,当程序无法进入断点时,可以考虑是否有其他应用占用了你本地的9000端口。
2、设置servers域名
3、打开Run > Edit Configuractions,新增一个php web applcation配置,server选择刚才创建的servers
4、好了,现在看看右上角的小电话按钮状态, 打开listen就可以开始调试了,或者点击Run/Debug就可以调试了,在程序的某个点打上断点,调试开始后在下面的操作栏会有运行到某个的变量信息,可以按箭头进行进入、下一步等调试。
在postman请求中的COOKIE
里加入XDEBUG_SESSION=PHPSTORM
则可调起phpstrom的调试功能
在Headers中新增key:Cookie,Value:XDEBUG_SESSION=PHPSTORM
还有其他参数:
XDEBUG_SESSION=PHPSTORM
:打开xdebug功能XDEBUG_PROFILE=XDEBUG_PFOFILER
: 打开profile功能XDEBUG_TRACE=XDEBUG_TRACE
:打开trace功能
三、给你的chrom浏览器安装Xdebug扩展
下载地址:
https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc
下载后打开xdebug helper页面,设置IDE key为phpStrom,如图:
- IDE Key:编辑器设置
- Trace Trigger Value:通过GET/POST传递XDEBUG_TRACE来启动调试功能
- Profile Trigger Value:每次请求如果GET/POST包含变量名,就会自动生成性能报告,对应的配置为xdebug.profiler_enable_trigger_value,但需要xdebug.profiler_enable_trigger为on
四、开始你的断点调试
1、在你安装已Xdebug扩展的浏览器中,打开你本地项目的某一个页面。并开启浏览器右上角的debug,如下图。
2、在你的phpstorm编辑器中,打开你在浏览器中页面要经过的代码,并按下图中操作。
3、再一次刷新你在浏览器中打开的页面,然后看看你的phpstorm编辑器。左侧断点的红色圆圈,变成了圈中有一个对勾,那么代表你进入了断点。如下图
五、断点快捷键
快捷键 | 功能描述 |
---|---|
F8 | 单步调试,不进入函数内部 |
F7 | 单步调试,进入函数内部 |
Shift+F7 | 选择要进入的函数 |
Shift+F8 | 跳出函数 |
Alt+F9 | 运行到断点 |
Alt+F8 | 执行表达式查看结果 |
F9 | 继续执行,进入下一个断点或执行完程序 |
Ctrl+F8 | 设置/取消当前行断点 |
Ctrl+Shift+F8 | 查看断点 |
引用
phpstrom+xdebug+chrome+postman调试工具搭建
PhpStorm+xdebug+postman调试