【问题标题】:Xdebug 3.0 WSL2 and VSCode - Configuration That WorksXdebug 3.0 WSL2 和 VSCode - 有效的配置
【发布时间】:2021-05-17 07:32:44
【问题描述】:

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

以下内容适用于我的一个 PHP 项目,其中包含一个文件,只是为了测试调试。使用 Ubuntu 20.04、WSL2、Xdebug 3.02 以及 Felix Becker 的 VSCode 扩展 Remote WSL 和 PHP Debug。

我必须在我的系统上同时修改 /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 

launch.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


    【解决方案1】:

    补充@Jim D 记录的内容:

    我最初使用其 Windows 网络共享路径 \\wsl$\Ubuntu-18.04\srv\www\myphpwebsite 打开了我的 VSCode WSL2 工作区。 Xdebug在这个配置下工作——大概是因为端口 9003 没有从 Windows 转发到 WSL2。

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

    此后,我不得不专门在 WSL:Ubuntu WSL2 环境中“安装”(或启用)PHP Debug extension,即使它已经安装在 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
    

    然后我在/etc/php/7.3/apache2/conf.d 文件夹中添加了一个补充99-xdebug.ini 文件(以确保它在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 helper extension 触发XDebug 会话。 (如果使用 .ini 设置 xdebug.start_with_request=yes 代替,则不需要 Xdebug helper 扩展,因为 Xdebug 将尝试连接端口 9003 上的调试器 every 对 PHP 的 Web 请求。)

    最后,我注释掉了xdebug.log=/tmp/xdebug/xdebug.log 设置,因为这会产生非常大的详细日志。 (但它在最初诊断正在发生的事情时很有用。)

    更新

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

            {
                "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"
                }
            },
    

    Xdebugging 祝你好运!

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 2019-03-15
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2022-08-07
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多