代码之家  ›  专栏  ›  技术社区  ›  mjs

Xdebug成功连接到DBGP客户端,但不会在断点处停止

  •  5
  • mjs  · 技术社区  · 14 年前

    我有 Xdebug xdebug.remote_log 显示来回通信,客户机本身也显示传入连接),但它不会在断点处停止。我试过了 NetBeans MacGDBp 还有命令行 debugclient 与Xdebug捆绑在一起。

    典型的交换如下所示:

    Log opened at 2010-07-20 09:33:17
    -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///mnt/hgfs/htdocs/mycompany/index.php" language="PHP" protocol_version="1.0" appid="14371" idekey="macgdbp"><engine version="2.1.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2010 by Derick Rethans]]></copyright></init>
    
    <- status -i macgdbp
    -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="starting" reason="ok"></response>
    
    <- step_into -i macgdbp
    -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="macgdbp" status="stopping" reason="ok"></response>
    
    <- status -i macgdbp
    -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="stopping" reason="ok"></response>
    
    Log closed at 2010-07-20 09:33:18
    

    NetBeans尝试设置断点,这些断点由Xdebug确认:

    <- breakpoint_set -i 7 -t line -s enabled -f file:///mnt/hgfs/htdocs/mycompany/index.php -n 9
    -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" state="enabled" id="139360004"></response>
    

    然而,Xdebug仍然拒绝停止!

    5 回复  |  直到 14 年前
        1
  •  11
  •   mjs    14 年前

    如果将Xdebug作为 extension extension=xdebug.so )在PHP配置中而不是 zend_extension (即。 zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so ).

    确保你没有 在任何地方 在PHP配置中 ,即使你很确定你在用 zend\u分机 zend\u分机 在里面 /etc/php5/conf.d/xdebug.ini 延伸 在里面 /etc/php5/apache2/php.ini . 如果是这样的话,没有人会抱怨,而且 phpinfo() 将尽职报告Xdebug已加载(Xdebug 2.1在 phpinfo() 当作为扩展加载时,但以前的版本不执行任何操作。)

        2
  •  2
  •   digitalstraw    5 年前

    我在Windows上的Docker容器上遇到了这个问题。所有这些似乎都配置正确,phpStorm在127.0.0.1上的本地端口9000上正确侦听。phpinfo()显示xdebug.so正在运行。当我从网络浏览器运行脚本时, 调试器未能在中断时停止 . xdebug.log包含以下内容:

    Log opened at 2019-07-02 08:17:10
    I: Connecting to configured address/port: docker.for.mac.localhost:9000.
    I: Connected to client. :-)
    -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///app/www/index.php" language="PHP" xdebug:language_version="7.2.15" protocol_version="1.0" appid="38768" idekey="PHPSTORM"><engine version="2.6.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2018 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 2019-07-02 08:17:10 
    

    docker.for.mac.localhost 即将被放入 xdebug.remote_host 设置。即使xdebug.log声称xdebug已连接到客户端,但实际上它没有连接。

    解决办法是 xdebug.remote_host = host.docker.internal . 此主机名在Docker容器中用于与承载容器的操作系统建立本地连接。

    更多信息请点击此处: https://docs.docker.com/docker-for-mac/networking/

        3
  •  0
  •   Wouter J schlicki    11 年前

    您必须添加 完整路径 xdebug.so php/modules/ 文件夹,作为 zend_extension

    如果你有 exension=xdebug.so 行,xdebug将加载,但它不会在断点处停止(我不知道为什么)。

    全部删除 exension=xdeabug.so (即使是从cli ini文件,它也会加载)和添加 会解决问题的。

        4
  •  0
  •   AndreyP    10 年前

    如果将php文件放入symlink文件夹,那么XDebug将使用源文件夹路径而不是symlink文件夹路径进行操作!

    因此,要启用断点,您应该在ide中为符号链接的文件夹和文件配置路径映射

        5
  •  0
  •   Cody    10 年前

    我知道这个问题已经得到了回答,但我遇到了同样的问题,只是想在其他人遇到这个问题时给出我的答案。我不小心在我的路径中漏掉了一个case值,它仍然允许我连接并运行调试器,但它不会在断点处停止。我直到非常沮丧才意识到这一点,所以我只想让人们知道这也有可能。

        6
  •  0
  •   Dewen Li    6 年前

    在我的例子中,Eclipse无法获取调试信息,所以启用xdebug日志并检查响应,返回 <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

    修复是更改调试配置

    xdebug.remote_host=127.0.0.1 to
    xdebug.remote_host=localhost
    

    然后重启Apache。

    希望这有帮助