phpstorm启用xdebug调试
工要善其事,必先利其器,首先我们准备的是强大开发工具IDE : PhpStorm
我们用的是最新版 phpstorm 2019.3 (网上有破解激活方法)
然后用的是 phpStudy v8 环境套件 (官网下载地址: https://www.xp.cn )
windows下的php安装XDebug拓展: https://www.cnblogs.com/phplog/articles/11038520.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:\PHPServer\phpStudy_v8\Extensions\php\php7.2.9nts\ext\php_xdebug.dll" ;指定堆栈跟踪文件的存放目录 xdebug.trace_output_dir="E:\PHPServer\phpStudy_v8\Extensions\tmp\xdebug" ;是否开启远程调试 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:\PHPServer\phpStudy_v8\Extensions\tmp\xdebug" ;指定传递给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:\PHPServer\phpStudy_v8\Extensions\tmp\xdebug\remote.log"
特别注意:
zend_extension="E:\PHPServer\phpStudy_v8\Extensions\php\php7.2.9nts\ext\php_xdebug.dll" 这个路径根据自己的进行修改
xdebug.trace_output_dir="E:\PHPServer\phpStudy_v8\Extensions\tmp\xdebug" 这个文件夹目录必须存在,没有的话手动创建目录
xdebug.profiler_output_dir="E:\PHPServer\phpStudy_v8\Extensions\tmp\xdebug" 这个文件夹目录同上
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 执行到下一个断点处