Visual Studio 代码不会在 PHP Xdebug 中的断点处停止

Visual Studio Code won't stop at breakpoint in PHP Xdebug

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

我已经为 Visual Studio 代码正确安装了 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 代码,XAMPP,并使用了另一个 Xdebug 版本,但它仍然不起作用。

我点击了这些链接:

None 这些解决方案有效。

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

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

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

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

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

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

2.open vscode 并将端口更改为 launch.json 中的相同号码: "port": 9900

3.enjoy 你的调试

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

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

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

  • OS: Windows 10 个 64 位
  • PHP 5.6(32 位 TS)
  • Xdebug 2.5.5(32 位)
  • Apache 2.4(32 位)
  • 安装在 Google Chrome
  • 上的 Xdebug 助手

1) httpd.conf

2) php.ini(XDebug 部分)

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

在我的例子中,pathMappings 不正确,并且没有更改端口

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

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

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

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

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

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

请注意,如果您使用的是 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 的通信,即使您可能没有调试,这会在您的 [=44] 中提供 warning =] 控制台状态:

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

最好使用 chrome 扩展来触发 xdebug 在浏览器中使用 cookie 的激活。有关详细信息,请参阅 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 中的调试并且应该可以正常工作。 祝你在与 bug 的斗争中取得最好的成绩 war!