PHPStorm + Xdebug无法单步调试

前言:

好早之前,弄过一次Xdebug。 那个时候用的是sublime配合的xdebug。 结果各种踩坑,不兼容。毕竟xdebug对sublime的支持本来就不友好。 最近在追TP5的源码,var_dump、print_r用起来显然不够看,太繁琐,追起代码来效率太慢了。 然后今天在公司刚好有注册好的PHPStorm,只要在来个Xdebug就可以直接使用了。 不多说,开干。

运行环境:

XAMPP + PHP7.3 + PHPStrom(2018.2.5)这里为什么要额外说一下PHPstorm的版本呢? 等等会说到,在这有个大坑。

配置:

  1. 下载对应的php版本的xdebug拓展,.dll文件,引入php目录下的ext拓展文件库
  2. 修改php.ini加入xdebug的拓展配置
  3. 重启Apache服务器
  4. 配置PHPStrom与php.ini中的配置一致
  5. 开启浏览器拓展工具

网上一大堆教程,这里就不细说配置过程了。这边贴两个链接,说一说踩的坑吧。

详细配置链接:https://getpass.cn/2018/04/10/Breakpoint debugging with phpstorm+xdebug/
https://blog.csdn.net/weikaixxxxxx/article/details/90137792

注意:

由于之前有过一次配置的经历,所以这次像网上大家普遍踩的坑都没有踩到(以前踩过了!!) 但是这次却碰到了另一个我觉得是"天坑"的坑。

在上一步配置完成后,PHPStrom中设置断点可以正常运行,并且捕获断点。 但是!一旦单步执行或者步过执行直接当前进程锁死,没办法动了,只能重新开启调试。 排查了半天,重新配置php.ini输出Xdebug的日志信息也没有发现丝毫问题。

最后发现,是PHPStrom版本的问题,我使用的版本是PHPStrom2018,而XAMPP里面自带的Xdebug是2.7.02的(好像是Xdebug版本太高导致的?) 期间不是没有想到过可能是Xdebug版本的问题,但是一般都只考虑Xdebug是否与PHP版本匹配就好了吧?谁能想到还要考虑IDE版本的问题???(吐血.jpg)

所以,今天又发现一个新坑。 如果你的Xdebug和PHPStorm配置能够捕获断点,但是无法单步调试的时候,可以考虑一下是不是和PHPStrom版本不兼容的问题。

总结:

版本兼容,不应该只是PHP和Xdebug的版本兼容。 还应该考虑 IDE(PHPStrom) + PHP + Xdebug 三个版本的兼容都考虑。Xdebug版本太低可能PHP不支持,Xdebug太高可能IDE不支持了。

你可能感兴趣的:(学习,遇到的BUG)