希望以下内容能给您足够的帮助。
我的设置
我在用着:
- Windows 10(现在为内部版本 19043.1288),
- VSCode (v1.61.2) 与
- PHP 调试 (v1.21.1),
- Firefox 和 Google Chrome 浏览器,
- XAMPP (v3.3.0)
- Xdebug(现在 v3.1.1-7.4x86_64)
- 我还在后台运行 Ubiquiti 网络控制器和 BitDefender AV。
PHP.ini
[Xdebug]
zend_extension = xdebug
;zend_extension = "c:\xampp\php\ext\php_xdebug-3.1.1-7.4-vc15-x86_64.dll"
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000
xdebug.log = "c:\xampp\htdocs\j4\tmp\xdebug.log"
问题
我已经让 VSCode/XAMPP/Xdebug 与 Joomla 3 一起工作一年多了,没有任何问题。我离开了几个星期,当我回来时,我无法单步进入任何 Joomla 3 模块/课程。VSCode 会在断点处停止,但单步和单步进入都会立即转到父调用函数。
啊,我对自己说,可能Windows做了一些事情——可能是升级到J4的好时机,以及更新我的环境。同样的问题。在第一个断点处停止,不会单步或单步进入 - 它不会在后续断点处停止。在核心 J4 模块中显示为单步。堆栈出现正常 - 可以检查初始化变量。
我试过的
一切!为了保持相关性 - 我现在安装了一个全新的、开箱即用的、纯正的 XAMPP、Joomla4 和 Xdebug(按照 Xdebug 向导的推荐)。我还暂时禁用了我的 AV (BitDefender)。我的电脑上没有任何防火墙,因为我在网络防火墙后面。
以防万一,我做了深度病毒扫描和磁盘检查——什么也没做。
在重新安装所有内容之前,我能够获得 Xdebug 日志文件,但现在我不能。我还注意到断点不会重置 - 我会删除所有 BP,它们会在下一次运行时返回。我必须停止并重新启动 VSCode 中的 PHP 调试才能让它们消失。
我怀疑最新的 Windows 更新(或者可能是最后几个)对我的开发环境有影响。然而,我也有可能在设置中错过了一些愚蠢的东西,因为我已经绕了几次赛道,而且我的头没有按应有的方式运作。
我需要帮助的地方
我现在不知道下一步该尝试什么 - 有什么建议吗?如果没有其他人可以重现这一点 - 这意味着我的系统中的某些东西出现了故障,我们将不胜感激。
更新 1
我发现 Xdebug v2 已经潜入我的 php/ext 目录 - 不太清楚如何 - 这就是我无法让日志文件工作的原因。我现在安装了正确版本(3.1.1)的 Xdebug 并且可以正常工作。然而,单步问题仍然存在。
我现在有一个来自 VSC 调试控制台和 xdebug.log 的日志:见这里
我观察到的一件事是,有许多与不推荐使用的函数相关的错误——我原以为它们是警告而不是错误!
还有许多“错误评估代码”的案例。
我用“************”突出显示了代码在日志中停止的地方。我不知道这是预期的还是正常的,但它似乎确实发生在断点停止之前的一小段时间——调试控制台日志中的第 431 行与第 651 行。
更新 2
以防万一任何人有任何兴趣 - 我安装了带有 PDT 的最新版本的 Eclipse IDE。使用与以前完全相同的 XAMPP/htdocs 目录 - Xdebug 按预期工作。单步没有问题。
这意味着,我相信,Windows、XAMPP、Xdebug 和 Joomla 可以被排除为罪魁祸首,因为这两种环境都很常见。相反,这也意味着 VSCode 发生了一些事情,或者至少与我的特定 VSCode 设置有关。
突破(我认为!)
看来是我放入监视窗口的几个变量(例如 $this->missingclasses)导致了问题。我怀疑在一些 VSCode 更新过程中,与这些变量关联的持久内部对象出现了故障/损坏。当我删除有问题的变量手表时 - 单步再次开始工作。
在看到它起作用之后,我能够把手表放回去,单步工作按预期工作。将相同的监视变量放入 Eclipse 对单步执行没有影响。
为了更好地衡量,我还删除并重新安装了 PHP Debug - 尽管我很确定无法评估的监视变量是这里的真正问题。
我会离开这几天,然后我会用建议的解决方案关闭它