Xdebug 3.0 WSL2 和 VSCode - 有效的配置

问题描述 投票:0回答:3

网络上使用 VSCode 和 WSL 进行 PHP 调试的大多数示例都使用 Xdebug 2.x php.ini 设置。这些不再适用于 3.0 版本。有关更改的详细信息,请参阅Xdebug Upgrade

以下内容对我来说在一个带有单个文件的 PHP 项目中工作,只是为了测试调试。使用 Ubuntu 20.04、WSL2、Xdebug 3.02 以及 VSCode 扩展远程 WSL 和 PHP 调试,作者:Felix Becker。

我必须修改我系统上的

/etc/php/7.3/apache2/php.ini
/etc/php/7.3/cli/php.ini
。希望这对你们有用。

php.ini

[xdebug]
zend_extension = ./lib/php/20180731/xdebug.so
xdebug.start_with_request = trigger 
xdebug.mode = debug
xdebug.discover_client_host = 1
xdebug.log = /tmp/xdebug_remote.log
xdebug.client_port = 9003 

启动.json

"configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "stopOnEntry": true,
            "log": true,
            "pathMappings": 
            {
                "/var/www/html/test": "${workspaceRoot}"             
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9003
        }
    ]  
visual-studio-code xdebug vscode-remote
3个回答
8
投票

补充@Jim D记录的内容:

我最初使用其 Windows 网络共享路径打开 VSCode WSL2 工作区

\\wsl$\Ubuntu-18.04\srv\www\myphpwebsite
Xdebug 不能 使用此配置 - 可能是因为端口 9003 未从 Windows 转发到 WSL2。

我必须使用远程 - WSL 扩展重新打开工作区/文件夹。为此,您可以单击 VSCode 状态栏(左下角)上的 Remote-WSL 控件,然后选择“在 WSL 中重新打开文件夹”。将 Remote-WSL“安装”到 WSL2 中大约需要 10 分钟。

此后,我必须专门在 WSL:Ubuntu WSL2 环境中“安装”(或启用)PHP 调试扩展,即使它已经安装在 VSCode 中。

我的

launch.json
配置是:

        {
            "name": "myphpwebsite",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/srv/www/myphpwebsite": "${workspaceRoot}" 
            },
            //"stopOnEntry": true,
            //"log": true,
            "xdebugSettings": {
                "max_data": 10000,
                //"show_hidden": 1,
                "max_children": 250,
                "max_depth": 10
            }
        },

我的PHP配置(针对PHP 7.3)如下:在

/etc/php/7.3/apache2/conf.d
文件夹中,
20-xdebug.ini
文件是指向
/etc/php/7.3/mods-available/xdebug.ini
的符号链接。这是通过
sudo apt install php7.3-xdebug
自动配置的。它仅包含:

zend_extension=xdebug.so

然后我将补充的

99-xdebug.ini
文件添加到
/etc/php/7.3/apache2/conf.d
文件夹中(以确保它在
20-xdebug.ini
文件之后加载,并使其配置与发行版分开)。该文件包含:

xdebug.mode=debug
xdebug.start_with_request=trigger
;xdebug.start_with_request=yes
xdebug.discover_client_host=1
;xdebug.log=/tmp/xdebug/xdebug.log
xdebug.output_dir=/tmp/xdebug/
xdebug.client_port=9003
xdebug.var_display_max_depth=10
xdebug.var_display_max_children=250
xdebug.var_display_max_data=10000

进行

.ini
更改后,不要忘记重新启动 Apache。

使用

xdebug.start_with_request=trigger
设置,在 VSCode 中启动调试器后,我使用 Chrome Xdebug 帮助程序扩展 来触发 XDebug 会话。 (如果使用
.ini
设置
xdebug.start_with_request=yes
,则不需要 Xdebug helper 扩展,因为 Xdebug 将尝试通过对 PHP 的 every Web 请求与端口 9003 上的调试器连接。)

最后,我注释掉了

xdebug.log=/tmp/xdebug/xdebug.log
设置,因为这会产生非常大的详细日志。 (但它对于最初诊断正在发生的情况很有用。)

更新

要将

xdebug.start_with_request=trigger
xdebug.trigger_value=VSCODE
与 VSCode 的“启动当前打开的脚本”调试配置一起使用,我必须在
"env"
中的
launch.json
部分设置正确的环境变量:

        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9003,
            "pathMappings": {
                "/srv/www/myphpwebsite": "${workspaceRoot}" 
            },
            //"stopOnEntry": true,
            //"log": true,
            "env": {
                "XDEBUG_MODE": "debug",
                "XDEBUG_TRIGGER": "VSCODE"
            }
        },

祝 X 调试好运!


0
投票

更新 PHP 8.1。需要更改 xdebug.so 文件的完整路径。 zend_extension = ...您的路径可能会有所不同,具体取决于您的系统。不同的是“20210902”。

[xdebug]
zend_extension = /usr/lib/php/20210902/xdebug.so
....
....

0
投票

步骤 安装 WSL 2 和 Ubuntu 22.04

wsl --install

打开 Ubuntu 终端并安装调试

sudo apt install -y php-xdebug

编辑 xdebug.ini 并添加行

vim /etc/php/8.1/cli/conf.d/20-xdebug.ini
zend_extension = xdebug.so
xdebug.mode = develop,debug
xdebug.discover_client_host = 1

创建项目文件夹:

mkdir ~/演示 cd ~/演示

在 VS 代码中 像这样安装 WSL 扩展:

按 F1,按 Backspace,粘贴以下命令并按 Enter:

ext install ms-vscode-remote.remote-wsl

像这样安装 PHP 调试扩展:

按 F1,按 Backspace,粘贴以下命令并按 Enter:

ext install xdebug.php-debug

在 WSL 中打开项目文件夹,如下所示:

按F1,输入WSL:连接到WSL并按Enter 选择文件夹演示 使用以下内容创建文件 ~/demo/.vscode/launch.json:

{
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch"
    }
  ]
}

打开文件index.php

在第二行设置断点

按F5开始调试

在您的网络浏览器中 安装“Xdebug helper”扩展

转到http://localhost:8080/

单击扩展程序的图标并启用它

重新加载页面

现在应该命中断点。

原帖

© www.soinside.com 2019 - 2024. All rights reserved.