gpt4 book ai didi

PhpStorm Xdebug 过早退出方法

转载 作者:行者123 更新时间:2023-12-02 15:48:47 25 4
gpt4 key购买 nike

我正在使用 PhpStorm 版本#PS-222.3345.135 的 Ubuntu 18.04 系统。我使用的是 PHP 7.4.20 和 Xdebug 2.9.8。

首先,当我没有在我的网络请求上运行 Xdebug 时,它们工作得很好。当我尝试使用 Xdebug 逐步执行时,方法会过早退出,如下面的屏幕截图所示:

第一张截图:

Interceptor::launch()

执行在 launch() 方法的第一行。因此,按下 Step Over 按钮应该会执行到第 112 行 ($this->_state->setAreaCode($areaCode)); 相反,按下 Step Over 会提前退出 launch() 方法并将执行线程带回 Bootstrap::run() 方法,如下所示:

After pressing Step Over

请注意,run() 局部作用域中没有 $response 变量,因为 launch() 方法不允许返回由于过早退出而产生的值。再次按 Step Over 将导致 $response->sendResponse() 抛出异常,如下面的屏幕截图所示:

Exception being thrown

总而言之,这里的问题是 Xdebug 没有正确单步执行代码。这个问题直到上周才开始出现,我的项目路径映射与之前相同。

这发生在多个 PhpStorm 项目中,而不仅仅是这个代码库。但是,我确实有一个 PhpStorm 项目(代码库要小得多),其中单步执行代码工作正常(结果我将 PhpStorm 内存限制升级到 2GB,但没有解决任何问题)。

有人知道为什么会这样吗?

最佳答案

这是 PhpStorm 2022.2 问题(WI-67891 票)。

https://youtrack.jetbrains.com/issue/WI-67891/Step-Over-broken-for-Xdebug-30-for-static-methods-and-private-properties-from-parent-classes#focus=Comments-27-6367485.0-0

Reason of the bug is found and fixed. Fix will be available in next minor update. Below is a technical summary of the issue for ones who curious about what happened:

  1. Xdebug had a bug which is basically breaks further step_over commands by passing invalid eval commands. This bug is fixed in 3.1, but present in all older versions.

  2. In 2022.2 We've implemented feature WI-56517 that shows __toString representation of the object in debug panel. This feature is implemented by passing eval((string)expression) command on start of debug sessions

  3. It turned out that there are number of invalid inputs that happened to be produced by this command:

Combination of these factors resulted into broken step_over. Both cases are fixed and will be available in next minor update. Sorry for the inconvenience and thank you for reporting the issue.

上述WI-67891票被标记为固定为 2022.2.1。你可以try 2022.2.1 Preview现在。

同时有一些报告说,在某些情况下(未涵盖的情况),调试仍然无法像以前的版本那样工作。可悲的是,有更多无用的“我也是”评论而不是“这是一个代码示例,但它仍然不起作用”(因为它需要时间来制作它,看看可能导致它的原因,能够发现其中的差异设置/环境等)。

当前的解决方案:

  • 如果可以,请升级到 Xdebug 3.1 或更新版本(目前最新版本是 3.1.5)。
  • 禁用设置/首选项 | PHP |调试 |评价 |启用“__toString”对象 View ,直到确认已正确解析。不要忘记将其还原(此功能似乎方便调试时快速浏览)。
  • 继续使用之前的稳定版 2022.1.4,直到确认问题已妥善解决。

关于PhpStorm Xdebug 过早退出方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73269823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com