phpstorm启用xdebug调试
工要善其事,必先利其器,首先我们准备的是强大开发工具IDE : PhpStorm
我们用的是最新版 phpstorm 2019.3 (网上有破解激活方法)
然后用的是 phpStudy v8 环境套件 (官网下载地址: https://www.xp.cn )
windows下的php安装XDebug拓展: https://www.cnblogs.com/phplog/articles/.html
创建一个网站,我选的php版本是 php7.2:
因为框架用的 thinkphp 5.1 , 服务器启用的是 nginx , 所以还要再设置一下伪静态
thinkphp 5.0, 5.1 的 nginx伪静态规则:
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
thinkphp 3.2 的nginx伪静态规则:
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
然后重启nginx服务。
编辑对应版本的 php.ini 文件配置:
在php.ini配置文件中加入配置:
[XDebug]
;指定Xdebug扩展文件的绝对路径
zend_extension="E:PHPServerphpStudy_v8Extensionsphpphp7.2.9ntsextphp_xdebug.dll"
;指定堆栈跟踪文件的存放目录
xdebug.trace_output_dir="E:PHPServerphpStudy_v8Extensions mpxdebug"
;是否开启远程调试
xdebug.remote_enable=on
;开启远程调试自动启动
xdebug.remote_autostart=on
xdebug.remote_mode=req
;指定远程调试的处理协议
xdebug.remote_handler="dbgp"
;指定远程调试的主机名
xdebug.remote_host="127.0.0.1"
;指定远程调试的端口号
xdebug.remote_port=9100
;是否启用Xdebug的性能分析,并创建性能信息文件
;xdebug.profiler_enable=on
;xdebug.profiler_enable_trigger=0
;指定性能分析信息文件的输出目录
xdebug.profiler_output_dir="E:PHPServerphpStudy_v8Extensions mpxdebug"
;指定传递给DBGp调试器处理程序的IDE Key
xdebug.idekey="PHPSTORM"
;启用代码自动跟踪
;xdebug.auto_trace=on
;允许收集传递给函数的参数变量
xdebug.collect_params=on
;允许收集函数调用的返回值
xdebug.collect_return=on
;是否收集变量
xdebug.collect_vars=on
;是否开启异常跟踪
xdebug.show_exception_trace=0
;显示局部变量
xdebug.show_local_vars=on
;显示默认的错误信息
xdebug.default_enable=on
;xdebug.remote_log="E:PHPServerphpStudy_v8Extensions mpxdebug emote.log"
特别注意:
zend_extension="E:PHPServerphpStudy_v8Extensionsphpphp7.2.9ntsextphp_xdebug.dll" 这个路径根据自己的进行修改
xdebug.trace_output_dir="E:PHPServerphpStudy_v8Extensions mpxdebug" 这个文件夹目录必须存在,没有的话手动创建目录
xdebug.profiler_output_dir="E:PHPServerphpStudy_v8Extensions mpxdebug" 这个文件夹目录同上
xdebug.remote_port=9100 我把监听端口设置为9100
xdebug.idekey="PHPSTORM" 把IDE KEY设置为 PHPSTORM
然后配置 PHPStorm 配置:
Language & Frameworks > PHP > Debug , 设置 Xdebug 的 Debug Port 为 上面设置的 9100 端口
点击工具栏 配置 Edit Configurations..
弹出窗口中,点击 + 号, 点击添加 PHP Remote Debug
弹出窗口 Run/Debug Configurations 配置 Configuration > Filter debug connection by IDE key 前面打勾,
选择一个Server, 没有 Server的话 点击右边的 ... 按钮, 添加一个 Server
新建一个 Server , 配置 Debugger 为 Xdebug
弹出窗口 Run/Debug Configurations 配置中 IDE key 填写 PHPSTORM
用Postman 来测试接口
就会发现 一直在发送等待状态 Sending request
我们返回 PhpStorm 编辑器,就会出现 XDebug 断点调试响应区域,XDebug配置算是完成了。
如果没有唤醒phpstorm的debug调试功能,可以:
在postman请求中的COOKIE里加入XDEBUG_SESSION=PHPSTORM则可调起phpstrom的调试功能
在Headers中新增key:Cookie,Value:XDEBUG_SESSION=PHPSTORM
我们就可以方便的查看各种变量常量的运行值了:
编辑器其他配置:
以fpm方式-web的调试
以cli模式运行xdebug:
安装浏览器Debug拓展:
1. Firefox火狐浏览器
安装 Xdebug Helper for Firefox 拓展:
拓展安装完成后,就会多出一个debug按钮:
2. Chrome谷歌浏览器
到谷歌应用商店: https://chrome.google.com/webstore/category/extensions?hl=zh-CN 搜索安装 Xdebug helper 拓展:
输入 xdebug helper 然后按Enter回车健, 出现结果的第一条就是我们要安装的拓展:
安装完成后,就会出现Debug按钮:
XDebug调试的一些按钮功能:
图标功能
重新执行DEBUG (Rerun XDebug Ctrl + F5)
回到当前执行点的文件 (Show Execution Point Alt + F10)
不进入函数详情,执行下一步 (Step Over F8)
进入函数内部,执行下一步 (Step Into F7)
强行进入某个方法 (Force Step Into Alt + Shift + F7)
单步执行到子函数内时,就可以执行完子函数余下部分,并返回到上一层函数。(Step Out Shift + F8)
执行到下一个断点,或者鼠标悬停处(Run to Cursor Alt + F9)
执行修改变量或返回的结果用于二次调试(Evaluate Expression Alt + F8)
显示值的地址 (Show Values addresses)
是否显示空的值 , 默认是不显示(Show empty superglobals variables)
将方法添加到跳过列表(Add method to skip list)
运行到下个断点,没有断点就直接运行完成 (Resume Program F9)
停止本次debug (Stop XDebug Ctrl + F2)
管理所有断点 (View Breakpoints Ctrl + Shift + F8)
忽略所有断点 (Mute Breakpoints)
调试按钮说明:
F7 通过当前行,进入下一行,如果该行是方法,则进入方法体
F8 通过当前行,进入下一行,如果该行是方法,也直接进入下一行,不进入方法体
F9 通过整个流程,全部顺序执行,除非遇到下一个断点
F8 step over 步越 执行当前函数的下一步,如果有子函数,也不会进入,会一直执行到函数结束
F7 step into 步入 执行当前函数的下一步,如果有子函数,会从头到尾执行子函数,还原了程序执行的最详细的路线,从构造函数到结尾的每一步都会跳到。
Alt + Shift + F7 force step into 与 step into 相同,执行当前函数的下一步,如果有子函数也会进入子函数,只不过不会从头到尾的还原函数执行的路线,会直接跳到子函数内第一步,构造函数等一些前置方法会忽略
Shift + F8 step out 步出 跳出当前执行的函数,跳到父函数的下一步。
Alt + F9 run to cursor 执行到下一个断点处