XDebug 断点在 Visual Studio Code 中给出 PHP 错误
Posted
技术标签:
【中文标题】XDebug 断点在 Visual Studio Code 中给出 PHP 错误【英文标题】:XDebug breakpoint giving errors with PHP in Visual Studio Code 【发布时间】:2020-07-23 09:36:53 【问题描述】:我正在尝试使用 XDebug 和 Visual Studio Code 在 php 代码中设置断点,该代码全部安装在 Ubuntu Hyper-V 虚拟机上。我在 PHP 7.2 上。
每当我在我的 PHP 代码中设置断点并刷新应该命中断点的页面时,我都会在 Visual Studio Code 的弹出窗口中看到错误“命令不可用”和“没有这样的断点”。我还在调试控制台中收到以下错误。
XDebugError: command is not available
at new Response (/home/ben/.vscode/extensions/felixfbecker.php-debug-
1.13.0/out/xdebugConnection.js:56:19)
at new BreakpointSetResponse (/home/ben/.vscode/extensions/felixfbecker.php-debug-
1.13.0/out/xdebugConnection.js:207:9)
at Connection.<anonymous> (/home/ben/.vscode/extensions/felixfbecker.php-debug
1.13.0/out/xdebugConnection.js:599:20)
at Generator.next (<anonymous>)
at fulfilled (/home/ben/.vscode/extensions/felixfbecker.php-debug-1.13.0/out/xdebugConnection.js:4:58)
code: 5,
name: 'XDebugError'
根据我的研究,我认为问题在于 XDebug 不适用于 IPv6,但调试器正在侦听 v6。如果我做netstat -an | grep 9000
,我会得到
tcp6 0 0 :::9000 :::* LISTEN
这里是/etc/php/7.2/fpm/conf.d/20-xdebug.ini
的内容
zend_extension=xdebug.so
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.var_display_max_depth=-1
xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
如何解决这个问题并让我的断点工作?
【问题讨论】:
我的笔记本电脑升级到 Ubuntu 20.04 后开始出现这个问题 你能解决这个问题吗?我也遇到了这个问题,这是工作中的障碍 我也有同样的问题 我也有同样的问题 【参考方案1】:我使用这些扩展进行调试:
PHP 调试(作者 Robert Lu) PHP Intelephense(作者 Ben Mewburn)请检查您项目的 XDebug 配置。它是您项目根目录中 .vscode 文件夹中的 launch.json。如果缺少,则必须在 Visual Studio Code 的 Debug 设置中创建(齿轮按钮)。
应该是这样的:
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9000
,
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "$file",
"cwd": "$fileDirname"
]
【讨论】:
我确实创建了一个 Visual Studio Code 配置文件。 @BenRubin 根据您使用扩展程序的错误:PHP Debug (by Felix Becker)。我建议尝试扩展:PHP Debug (by Robert Lu)。如果它不起作用,请告诉我,我们尝试其他方法。【参考方案2】:这已在 PHP Debug 扩展中修复了一段时间。这是一个讨论它的issue 和一个链接的拉取请求。
由于 Xdebug/DBGp 的“同步”特性和 VS Code 的“异步”特性,当多个 PHP 进程连接到 PHP Debug 时,“add add”、“remove remove”、“ add add”会发生添加和删除断点的过程。 由于这个冲突,扩展程序最终试图删除一个已经被删除的断点,并且出现了这样的——不是很有帮助的——异常。
我正在继续开发 PHP Debug,所以如果您有问题或错误,请在此处提交。
【讨论】:
以上是关于XDebug 断点在 Visual Studio Code 中给出 PHP 错误的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Code IDE + Docker实现PHP Xdebug调试
如何在 Visual Studio 2008 或 Visual Studio 2010 中设置 JavaScript 断点