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 执行到下一个断点处