【问题标题】:Visual Studio Code won't stop at breakpoint in PHP XdebugVisual Studio Code 不会在 PHP Xdebug 中的断点处停止
【发布时间】:2019-03-31 23:32:14
【问题描述】:

我已从 Thinkpad 笔记本电脑转移到 HP Elitebook。我必须在我的新笔记本电脑中设置我的开发环境。在 Windows 10 Pro 64 位版本中设置我的 Visual Studio Code 和 XAMPP 后,我无法调试我的 PHP 代码。

我已经为 Visual Studio Code 正确安装了 Xdebug 扩展,并确保 php.ini 正确。这是我对php.ini 的设置(我使用的是放在E: 驱动器上的便携式XAMPP):

zend_extension = "E:\xampp\php\ext\php_xdebug-2.4.1-5.4-vc9.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_log="E:\xampp\apache\logs\xdebug.log"

而我的 xdebug.log 显示信息如下:

Log opened at 2018-10-27 05:56:45
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///E:/xampp/htdocs/absen/index.php" language="PHP" xdebug:language_version="5.4.3-dev" protocol_version="1.0" appid="7112" idekey="william"><engine version="2.4.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2018-10-27 05:56:45

但我的 Visual Studio 代码不会在断点处停止。

我已经重新安装了我的 Visual Studio Code、XAMPP,并使用了另一个 Xdebug 版本,但它仍然无法正常工作。

我已经点击了这些链接:

这些解决方案都不起作用。

【问题讨论】:

    标签: php visual-studio-code xdebug


    【解决方案1】:

    我终于知道问题的根源了。 HP Elitebook 预装了名为 HP Velocity 的程序,该程序使用端口 9000。

    问题是我主机的端口 9000 绑定到 HP Velocity 软件的端口 9000。当 HP Velocity 服务连接到 localhost xdebug 服务器时,日志显示连接正常,但已连接到 HP Velocity。

    我在 php.ini 中将 xdebug 端口更改为 9090,并在 Visual Studio 代码的 launch.json 中进行了更改。之后,我的 Visual Studio 代码照常工作,可以在断点处停止。

    希望这对其他人有所帮助:)

    【讨论】:

    • 有没有办法获取所有程序正在查看的端口列表?
    • 或许你可以使用netstat
    【解决方案2】:

    这是解决我遇到的相同问题的方法,如果以前的答案没有帮助,值得一试

    php.ini

     [XDebug]
    zend_extension = "C:\xampp\php\ext\php_xdebug-3.0.2-8.0-vs16-x86_64.dll"
    xdebug.mode = debug
    xdebug.start_with_request = yes
    xdebug.client_port = 9000
    xdebug.client_host = "127.0.0.1"
    xdebug.log = "C:\xampp\tmp\xdebug\xdebug.log"
    xdebug.idekey = VSCODE
    

    launch.json

    "configurations": [
        {
          "name": "Listen for XDebug",
          "type": "php",
          "request": "launch",
          "port": 9000
        },
        {
          "type": "php",
          "request": "launch",
          "name": "Run using local PHP Interpreter",
          "program": "${file}",
          "runtimeExecutable": "C:\\xampp\\php\\php.exe"
        }
      ]
    

    【讨论】:

    • 我在 Ubuntu 20.04 上遇到了同样的问题,这就像一个魅力!谢谢。
    【解决方案3】:

    在我的情况下,pathMappings 不正确,并且没有更改端口

    {
        ...
        "configurations": [
            {
                ...
                "port": 9000,
                "pathMappings": {
                    "/var/www/yourproject": "${workspaceFolder}/",
                 }
              }
          ]
      }
    

    如果我检查“Everything”断点,我的断点实际上正在工作 (它捕获了一个被抑制的异常,但是 VS 代码警告说找不到文件)

    【讨论】:

    • 我认为我的问题也与 pathMappings 设置有关。事实证明,尾随 / 很重要。添加它立即解决了我的问题。
    • 奇怪。这需要尾随/从xdebug 3开始吗?直到今天在 xdebug 3 设置中,我的配置在没有它的情况下工作
    • 我真的不明白为什么我们需要使用绝对路径,或者用斜杠跟踪工作区根目录,但这也解决了我的问题。我正在使用 Flywheel、WordPress、当前 VSCode、PHP 7.4.1(Local 和 VSCode PHP 工作区相同的 php.exe)和相应的 NTS XDebug 3 for Windows x64 "C:\\Users\\tonyg\\path\\LocalSites\\sitename\\app\\public\\": "${workspaceRoot}/" 使用 Local
    【解决方案4】:

    原因可能是 php xdebug 的端口造成的。当我这样做时它对我来说很好:

    1.使用php --ini显示php配置文件并将xdebug端口更改为9900: xdebug.remote_port=9900 然后重启你的php

    2.打开vscode,将launch.json中的端口改为相同的数字: "port": 9900

    3.享受你的调试

    【讨论】:

      【解决方案5】:

      在我的例子中,我试图在我的本地机器上调试一个 php 脚本,所以我必须意识到我必须使用 Web 服务器正在使用的端口(在我的例子中是 8080)来调试 php 脚本,而不是使用 VS Code 配置上设置的端口(我用的是 9090)。

      对于遇到此错误的任何人,这是我的配置:

      • 操作系统:Windows 10 64 位
      • PHP 5.6(32 位 TS)
      • Xdebug 2.5.5(32 位)
      • Apache 2.4(32 位)
      • Xdebug Helper 安装在 Google Chrome 上

      1) httpd.conf

      2) php.ini(XDebug 部分)

      3)launch.json(VS代码配置)

      【讨论】:

        【解决方案6】:

        我有同样的问题,但在 ubuntu 中将端口更改为 8000 后它对我有用。

        【讨论】:

          【解决方案7】:

          我是一个新手程序员,所以这可能听起来很愚蠢,但可能对像我这样的 PHP 和 Web 服务器新手有所帮助。

          我在 Xdebug 跳过断点时遇到了同样的问题。对我来说,事实证明我在“回声”语句上有一个断点。显然,这不是使用断点的有效行。一旦我将断点移动到变量声明,它就开始工作了。

          【讨论】:

          • 事实上,那个的一个有效的断点行。我想知道谁赞成这个
          【解决方案8】:

          请注意,如果您使用的是 Xdebug 版本 3.xx,您需要执行以下操作:

          停止Apache服务器,然后在php.ini文件末尾添加:

          [XDebug]
          xdebug.mode = debug
          zend_extension="C:\xampp\php\ext\php_xdebug.dll"
          

          之后,再次启动 Apache 服务器。

          请注意,添加xdebug.start_with_request = yes 将告诉 xdebug 为每个请求初始化与 IDE 的通信,即使您可能没有调试,这会在您的 IDE 控制台状态下发出警告:

          [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(

          最好使用 chrome 扩展程序,通过浏览器中的 cookie 来触发 xdebug 的激活。请参阅https://xdebug.org/docs/step_debug#browser-extensions 了解更多信息。

          在 vscode 中转到顶部菜单中的Run,然后转到Add configuration,这将打开launch.json,在configurations 下添加:

          {
              "name": "Listen for Xdebug",
              "type": "php",
              "request": "launch",
              "port": 9003
          },
          

          请注意端口9003 与您的应用端口不同。我正在运行我的 laravel 应用程序:php artisan serve,端口为8000,在我的启动中,xdebug 是9003

          在 vscode 中重新运行调试,应该可以正常工作。 祝你在与虫子的战斗中一切顺利!

          【讨论】:

            猜你喜欢
            • 2020-01-01
            • 1970-01-01
            • 2019-03-19
            • 1970-01-01
            • 2011-04-30
            • 2020-02-01
            • 2021-12-23
            • 2018-03-31
            • 1970-01-01
            相关资源
            最近更新 更多