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

时间:2010-07-20 10:00:04

标签: php netbeans debugging breakpoints xdebug

我安装了Xdebug 2.1,并使用PHP 5.2.13运行。它可以成功连接到多个DBGP客户端(即xdebug.remote_log来回显示通信,客户端本身也显示传入连接),但它不会在断点处停止。我尝试了NetBeansMacGDBp以及与Xdebug捆绑在一起的命令行debugclient

典型的交易所看起来像:

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仍然拒绝停止!

6 个答案:

答案 0 :(得分:10)

如果您在PHP配置中加载了extension(即extension=xdebug.so)而不是zend_extension(即zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so),则会出现这种情况。< / p>

确保您的PHP配置中没有extension=xdebug.so ,即使您非常确定自己正在使用{ {1}}。例如,如果zend_extension中有zend_extension,则可能会被/etc/php5/conf.d/xdebug.ini中的extension取代。如果是这种情况,则不会抱怨,/etc/php5/apache2/php.ini会尽职地报告Xdebug已加载! (当作为扩展加载时,Xdebug 2.1会在phpinfo()中发出一个小警告,但以前的版本什么都不做。)

答案 1 :(得分:0)

您必须将完整路径添加到xdebug.so文件中,即使该文件位于php/modules/文件夹中,因为zend_extension未查看此文件默认情况下为文件夹。

如果你有一个exension=xdebug.so行,xdebug会加载,但它不会在断点处停止(打败我的原因)。

删除所有exension=xdeabug.so(即使是cli ini文件,也会加载)并添加zend_extension将解决此问题。

答案 2 :(得分:0)

如果将php文件放入symlink-folder,则XDebug将使用源文件夹路径而不是symlink-folder路径运行!

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

答案 3 :(得分:0)

我知道这已经得到了解答,但我遇到了同样的问题,只是想提供我的答案,如果有其他人遇到这个问题。我不小心错过了我的路径中的一个案例值,这仍然允许我连接并运行调试器,但它不会在我的断点处停止。直到很沮丧,我才意识到这一点,所以我只想让人们知道这也是一种可能性。

答案 4 :(得分:0)

就我而言,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

在/usr/local/etc/php/5.6/php.ini

然后重新启动Apache。

希望这会有所帮助

答案 5 :(得分:0)

我在Windows的Docker容器上遇到了这个问题。一切似乎配置正确,phpStorm正确侦听了127.0.0.1的本地端口9000。 phpinfo()显示了xdebug.so运行。当我从Web浏览器运行脚本时,调试器无法在breakopint上停止。 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 

我不得不ssh进入容器,以发现它没有从容器连接到托管该容器的Windows。问题是,我的docker compose配置包含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/