【问题标题】:VSCodium (VSCode) doesn't start debugging PHP (PHP Debug + Xdebug, Linux)VSCodium (VSCode) 不开始调试 PHP (PHP Debug + Xdebug, Linux)
【发布时间】:2020-10-02 08:38:45
【问题描述】:

目标
使用PHP Debug、Xdebug 和 VSCodium 进行调试。

问题

VSCode 不开始调试。当我点击Start Debugging时,调试控制按钮下方的蓝线出现并移动了几秒钟,然后控制按钮消失了。当我按下绿色的“运行”按钮时也是如此

同样在左侧,“variables”、“watch”和“stack”没有显示。

说明
我没有使用 VSCodium 调试选项的经验。我使用了一些教程(123,视频并尝试了来自 VSCode PHP 调试扩展站点(我使用)的建议。 我在 Linux Mint 20 机器上使用 Codium (VSCode without MS)。 PHP 7.4 和 Xdebug 是通过 Linux Synaptic 包管理器安装的。当然,Firefox 中的 Xdebug 助手已启用,设置了断点,我在不同的项目中尝试过。我在php.ini 中尝试了一些东西。这就是现在的样子:

[XDebug]
xdebug.remote_enable = 1
; xdebug.remote_autostart = 1
; xdebug.remote_connect_back = 1

Xdebug 本身是通过 /etc/php/7.4/cli/conf.d/20-xdebug.ini 加载的,在 PhpStorm 中它可以正常工作,但在 VSCodium 中却不行。

这是标准的launch.json,保存在项目根目录下的.vscode文件夹中:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000,
      "log": true
    },
    {
      "name": "Launch currently open script",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 9000
    }
  ]
}

这是我的phpinfo() 输出的一部分:

还有 xdebug 部分:

这里是我使用 VSCodium 尝试时的 xdebug 日志:

[5625] Log opened at 2020-10-04 10:05:20
[5625] I: Connecting to configured address/port: localhost:9000.
[5625] W: Creating socket for 'localhost:9000', poll success, but error: Operation now in progress (29).
[5625] E: Could not connect to client. :-(
[5625] Log closed at 2020-10-04 10:05:20

我的猜测是,有一个基本的 VSCodium 调试功能,我没有启用它。但我不知道,它可能是什么。 也许有人有想法?

【问题讨论】:

  • 1) 为此类不成功的调试会话启用、收集和共享 Xdebug 日志。它会告诉它尝试连接到哪里以及响应是什么等。 2) 从phpinfo() 输出以与您尝试调试相同的方式捕获的整个 Xdebug 部分发布(因为网页调试和 CLI 可能不同 - - Linux 和 Mac 上的 CLI 和 Web 服务器使用不同的 php.ini 配置是很常见的)。
  • 所以 Xdebug 尝试连接到localhost:9000(同一台 PC 上的 TCP 9000 端口).. 但有些东西阻止了连接。 VSCode 是否已经在该端口上侦听?在 VSCode 中单击“调试”后,使用netstat 或类似工具检查 TCP 9000 上正在侦听的程序。它必须是 VSCode(因为它是连接到 IDE 的 Xdebug,而不是其他方式)。我自己(PhpStorm 用户)没有使用 VSCode,所以不能说你可能在 VSCode 方面缺少什么。
  • 不,VSCode 不监听任何端口。正如我所写,使用 PhpStorm 它可以工作。问题是,当我在 Debug 上单击 VSCode 时,它​​并没有真正启动。
  • 所以你需要做点什么:让 VSCode 以某种方式开始监听。正如我所说,我没有使用过 VSCode,所以除了尝试另一个教程/理想情况下是显示此类部分的视频外,我无法说出您需要做什么。从逻辑上思考,您需要点击“Listen for XDebug”,它将监听 TCP 9000 端口。如果没有——也许其他进程已经在那里监听等等?防火墙呢?这就是我现在可以说的。

标签: php debugging visual-studio-code xdebug vscode-debugger


【解决方案1】:

终于找到了解决办法。它是一个 Codium 特定的错误。在 VSCode 上它可以工作。 在这里找到解决方案: https://github.com/VSCodium/vscodium/issues/466

  1. 确保您没有安装 PHP 调试扩展;

  2. 转到https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug并使用“资源”→“下载扩展”下载vsix文件;

  3. 在 VSCodium 中,转到“扩展”侧边栏,然后单击附近的三个点图标 到“扩展”标题;

  4. 选择“从 VSIX 安装...”并选择下载的文件。

@LazyOne 再次感谢您的帮助 :)

编辑

如果您更新到 Xdebug 3.*,您必须修改 php.ini 中的 xdebug 部分:

添加这个:

xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9000

如果您将 launch.json 中的端口改为 9003,则可以删除最后一行。

另请参阅GitHub Issue

【讨论】:

  • 花了几个小时试图弄清楚,认为这是 Docker 设置的问题。原来这是一个错误。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 2020-07-04
  • 2020-06-20
  • 2014-11-28
  • 2019-03-15
  • 2020-05-19
  • 2021-02-23
相关资源
最近更新 更多