【发布时间】:2020-10-02 08:38:45
【问题描述】:
目标
使用PHP Debug、Xdebug 和 VSCodium 进行调试。
问题
VSCode 不开始调试。当我点击Start Debugging时,调试控制按钮下方的蓝线出现并移动了几秒钟,然后控制按钮消失了。当我按下绿色的“运行”按钮时也是如此
同样在左侧,“variables”、“watch”和“stack”没有显示。
说明
我没有使用 VSCodium 调试选项的经验。我使用了一些教程(1、2、3,视频并尝试了来自 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