【问题标题】:XDebug not working in VScode for php debuggingXDebug 在 VScode 中无法用于 php 调试
【发布时间】:2021-03-10 20:17:33
【问题描述】:

使用 xdebug 和 xampp 在 vscode 中进行 PHP 调试即使在所有配置之后也无法正常工作。

这是我的 php.ini 文件配置:

zend_extension = D:\Xampp\php\ext\php_xdebug-3.0.0-7.3-vc15-x86_64.dll
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1

这是json文件

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

    ]
}

【问题讨论】:

    标签: php debugging visual-studio-code


    【解决方案1】:

    xDebug 3 更改了几个默认值,因此请确保您的代码已准备好使用新值。

    这是我的配置集,它允许我像往常一样使用 PHP 断点:

    .vscode\launch.json

    {
        "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}",
                "port": 9000
            }
        ]
    }
    

    php.ini(手动插入文件末尾的行)

        [xdebug]
        zend_extension = "php_xdebug-3.0.4.dll"
        xdebug.mode = debug
        xdebug.discover_client_host = 1
        xdebug.start_with_request = yes
        xdebug.client_port = 9000
    

    注意:上面的zend_extension 选项会尝试在.../modules/php/PHP_%your_php_version%/ext/ 文件夹中找到您的xdebug

    【讨论】:

    • +1 用于发现并从请求设置开始。当 VS Code 忽略其他所有内容时,这些为我完成了工作
    • 注意 vscode 设置和 php.ini 中的端口。默认值从 xdebug 2 中的 9000 更改为 xdebug 3 中的 9003。因此,您要么需要将它们都设置为 9000,要么将设置更改为 9033 并让 php.ini 保持沉默。
    【解决方案2】:

    在 VSCode 中,我转到设置 -> 功能 -> 调试 -> 允许到处设置断点。

    我选中了标记为“Allow Breakpoints Everywhere”,并且能够再次调试。

    【讨论】:

      【解决方案3】:

      我刚刚对 XDebug 3 感到满意。 我在这里找到了一个很好的回应:@ 987654321@ jason-nabooki。 我也是这样:

      Json 文件:

          "version": "0.2.0",
          "configurations": [
              {
                  "name": "Listen for XDebug",
                  "type": "php",
                  "request": "launch",
                  "port": 9003,
                  "stopOnEntry": true,
                  "log": true,
                  "pathMappings": {"/var/wwww/ammac":"${workspaceRoot}"}
              },
              {
                  "name": "Launch currently open script",
                  "type": "php",
                  "request": "launch",
                  "program": "${file}",
                  "cwd": "${fileDirname}",
                  "port": 9003
       
      

      PHP.ini:

          xdebug.mode= debug
          xdebug.start_with_request = yes
          xdebug.discover_client_host = true
      

      要使用调试器(由于我以前使用过Eclipse,我没有立即找到!),

      首先:点击“Listen for XDebug”附近的绿色三角形

      second : 在 Firefox(或其他)中刷新网页

      对我来说它有效,我得到了变量。尚未测试断点。

      备注:Firefox 中不需要 XDEbug 助手(惊喜!)

      【讨论】:

      • 这只是因为它被设计为在第一行停止但它不会在断点处停止。如果删除了 stopOnEntry,它就不再起作用了。
      • 套件:问题出在路径映射上。 ${workspaceroot} 不匹配“/var/www/ammac”。 “workspaceroot”在哪里?要找到它,只需:文件 -> 打开文件夹:它会向您显示工作区根目录,在我的情况下为:“/var/www”。因此,我将“${worspaceRoot}”更改为“${workspaceRoot}/ammac”,它确实可以正常工作:F5 并停止到断点。
      【解决方案4】:

      我自己也在为此苦苦挣扎。显然 XDebug 3.x 不能像上面描述的那样工作。我发现即使 [XDebug] 下的等式也不再兼容。下载 XDebug 2.x(我认为 2.98 是 2.x 系列中的最新版本)。切换到 2.x 后,我不再有任何问题(到目前为止)。

      【讨论】:

        【解决方案5】:

        https://xdebug.org/wizard - 这个工具帮助我找到了调试器不起作用的原因。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-20
          • 2019-07-19
          • 2014-05-21
          • 2020-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多