[Xdebug]
zend_extension = php_xdebug.dll
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
不需要设置dbgp,这个用于远程调试,最重要的就是一个xdebug.client_port=9003,这个端口默认是9003,其实也可以不写这句话,client_host 默认是localhost
只需要配置一个地方,那就是xdebug的调试端口设置为上面ini中写的client_port即可,如果上面没有写client_port,这里就写9003
xdebug下面的4个复选框可以都不勾选,如果勾选了中间的2个,你会发现,每次都会在框架的入口处停下,这个是相当不友好的。
下面这个dbgp可以不管,这个用于远程调试的,就是代码不在本地,调试linux上的代码时需要配置的,这里先不管
PHP解释器需要安装xdebug,安装具体教程可以搜索,就是下载一个xdebug.dll的文件,配置到ini中,这里不具体说明
PHP安装完xdebug后,需要在CLI解释器中添加PHP,并一定一定要看到下面图中自动解析出xdebug的版本,如下图为xdebug 3.0.4
配置好后,调试时,先点击开始调试开关,变绿色后,再点调试,如下图
如果ini配置中的port更改的话,需要先断开,重新关闭再开启绿色开关后,再启动调试按钮。
在需要调试的行上打上断点,如下图
你会发现,这个点是红色的,此时一定要注意,这个断点没有生效,没有生效,需要点击调试按钮,重新启动调试,或者,你在调试开始之前就先打上断点。点击调试按钮后,断点变为下图。
可以看到,断点变绿了,这个时候,断点才真正的生效了。
请求接口,可以看到如下图:
恭喜你,成功了,简单吧。为你自己鼓掌。
虽然调试成功了,但如果使用久了话,你会发现,当点击右上角红色中断调试时,任务管理器中还是没有停止这个进程(但使用运行是可以正常停止的,就调试模式不行,猜测是因为xebug的原因),比如下图,我这个项目正常来说,是7个cli进程,但你看,会出现好多好多。
这里出现了13个,并且,无法正常再次调动调试模式。
所以,我们的思路就是,在每次启动之前,先检查有没有php.exe进程,如果有,则把所有cli的进程全部杀死,然后再启动调试。
1.在项目根目录新建一个bat,叫 kill cli.bat,内容如下:
@echo off
tasklist|find /i "php.exe"
if %errorlevel%==0 (
echo "has php cli"
taskkill /F /IM php.exe
) else (
echo "no php cli find"
)
然后先右键运行一下这个配置,确保没问题,同时生成一个php配置
正确结果如下:
然后,配置调试模式运行前执行这个配置
后面,如果更改了代码,想要重启调试,则只需要点击一下那个红色调试按钮就好了。任务管理器中进程数量一直是正确的。
windows 可以在这里下载 xdebug
https://xdebug.org/wizard
试过,没有用