VS 代码调试器 - Felix Becker - 调试器没有命中任何东西

VS Code Debugger - Felix Becker - Debugger doesn't hit anything

我最近安装了 Felix Becker 的 php 调试器。 无论我做什么配置设置,我的调试器都没有命中任何东西。 以下是我的 conf 文件。

xdebug.ini

[xdebug]
; debug
xdebug.default_enable = $value
xdebug.remote_autostart = $value
xdebug.remote_connect_back = 0
xdebug.remote_host = $value
xdebug.remote_port = $value
xdebug.remote_enable = 1
xdebug.idekey = $value

; profiling
xdebug.profiler_enable = 0
xdebug.profiler_output_dir = /tmp

zend_extension=xdebug.so

Launch.json

{
    // 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": 9009,
            "pathMappings": {
                "path/path": "$value"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
  
            "port": 9009,
            "pathMappings": {
                "path/path": "$value"
            }
        }
    ]
  }

我在这里遗漏了什么吗?

在 v1.52.1 中推送了对 Becker 扩展的修复,请参阅 https://github.com/microsoft/vscode/issues?q=is:issue+milestone:%22November+2020+Recovery%22+is:closed


Felix Becker 的 php 调试器扩展使用的是先前已弃用的 api,因此最后的 vscode 版本 1.52 意味着它不会命中断点。 vscode 的github 在这方面有很多问题。 vscode 团队成员建议启用此设置以修复:

Debug: Allow Breakpoints Everywhere

https://github.com/microsoft/vscode/issues/112288#issuecomment-743456329

另一种选择是使用已更新其代码以适应弃用的不同扩展。有关示例,请参阅 https://github.com/felixfbecker/vscode-php-debug/issues/424#issuecomment-727932756

Xdebug v3.0.1, by Derick Rethans

您正在使用 Xdebug v3,但继续使用 Xdebug v2 配置参数。您需要完成 Upgrading from Xdebug 2 to 3 Guide 并调整您的设置(主要是更改参数名称)。

Xdebug v3 使用与 Xdebug v2 不同的 配置参数。据我所知,9 个中有 8 个是“xdebug”。当前 php.ini 的参数在 Xdebug v3.

中做 nothing

对于 Xdebug 3,它应该是这样的(基于您的原始配置):

zend_extension=xdebug.so

[xdebug]
xdebug.mode = debug
; for profiling switch to below:
;xdebug.mode = profile

xdebug.client_host = ${PHP_XDEBUG_REMOTE_HOST}
xdebug.client_port = ${PHP_XDEBUG_REMOTE_PORT}
xdebug.discover_client_host = false
xdebug.start_with_request = ${PHP_XDEBUG_REMOTE_AUTOSTART}
xdebug.idekey = ${PHP_XDEBUG_IDE_KEY}
xdebug.output_dir = /tmp

P.S。 xdebug.discover_client_host 现在将在失败时回退到 xdebug.client_host(不像 v2 那样只会尝试自动检测主机)。

P.P.S。 xdebug.default_enable = 1 替换为 xdebug.mode = develop。如果您需要,则可以通过逗号列出多个值,例如xdebug.mode = develop,debug