Xdebug忽略了断点

时间:2010-08-06 09:16:27

标签: php eclipse netbeans xdebug

我目前正试图让Xdebug在我们的开发服务器上运行。作为客户端我使用netbeans和连接到目前为止工作没有问题。 但是当我尝试在netbeans中设置一个断点时,它就会被忽略。

是的,我已经用Google搜索了几个小时,并且在这里找到了一些完全符合我描述的问题: SO 1 SO 2

但这似乎并没有为我解决。 Xdebug模块通过zend_extension = path / to / xdebug加载。所以在

/etc/php5/conf.d/xdebug.ini

我还查看了php5 / apache和php5 / cli php.ini以确保它没有加载extension = somewhere那里。我还检查了phpinfo()发现的“解析的其他.ini文件”,似乎没有其他地方加载。

通过执行php -m,我可以在

中看到加载的Xdebug模块

[PHP Modules]

并在

[Zend Modules]

不确定这是否表示它仍然被加载两次或者它是否正常?如果我从 zend_extension=/path/to/xdebug.so 中删除conf.d/xdebug.ini,它也将不再加载。所以我真的认为它只是在那里加载。

如果我设置了remote_log选项,则会看到Netbeans正在尝试设置内容:

<- breakpoint_set -i 452 -t line -s enabled 
   -f file:///http:/development.xxx.de/users/itsame/index.php -n 15
-> <response xmlns="urn:debugger_protocol_v1"
    xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
          transaction_id="452" state="enabled" id="258870001">   
    </response>

但它似乎没有任何效果(看起来像我上面发布的其他SO问题一样。但是如果我在php代码中做了一个手动的xdebug_break()它就可以正确地处理它。

PHP版本是5.2.6,Xdebug是2.1。 我可以看看下一个建议吗?

10 个答案:

答案 0 :(得分:10)

看起来包含断点的文件的路径有问题。

<- breakpoint_set -i 452 -t line -s enabled 
   -f file:///http:/development.xxx.de/users/itsame/index.php -n 15 ->

我遇到过与Eclipse类似的问题。只接受了索引文件中的断点,并忽略了其他文件中包含在索引中的断点。

我查看了remote_log文件,看到了以下内容:

<- breakpoint_set -i 260 -t line 
   -f file:///~jeroen/workspace/fieg/wp-content/plugins/fieg/fieg.php -n 22-> 
<response xmlns="urn:debugger_protocol_v1" 
   xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
   transaction_id="260" id="48060002"></response>

我注意到断点的路径都错了。事实证明,我必须在Eclipse中设置端口映射。设置正确的映射后,断点开始工作。此外,我的remote_log现在显示正确的路径:

<- breakpoint_set -i 333 -t line 
   -f file:///Users/jeroen/Workspace/fieg/wp-content/plugins/fieg/fieg.php -n 12->     
<response xmlns="urn:debugger_protocol_v1" 
   xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
   transaction_id="333" id="48080005"></response>

我不确定Netbeans中是否有相同的Eclipse端口映射配置,但希望我指出了你的方向。

答案 1 :(得分:4)

对我来说问题是&#34;项目属性&gt;来源&gt; Web Root:&#34;没有设置(它有默认值&#34;作为其值)。

将其设置为磁盘上的Web根后,断点开始工作。

答案 2 :(得分:3)

在php.ini文件中,设置此指令:

report_zend_debug = 1

我希望这对某人有帮助吗?

答案 3 :(得分:2)

转到:Project > Properties > Run Configuration > Advanced (button)

如果您没有使用Xdebug进行远程调试,请从“路径映射”中删除所有映射。这有助于解决这个问题。

答案 4 :(得分:2)

提出的问题是xdebug.ini文件存在,但不报告其内容。 我的默认安装文件仅包括:

zend_extension=/usr/lib/php5/20100525/xdebug.so

但是为了实现调试,必须启用它。添加以下行:

xdebug.remote_enable=1

然后phpinfo()将报告正在运行的xdebug:

enter image description here

答案 5 :(得分:1)

我发现这篇文章试图在eclipse中解决我的xdebug问题而不是在Web应用程序的断点处破解。我发现这里的评论非常有用。此外,这篇文章http://www.devside.net/wamp-server/netbeans-waiting-for-connection-netbeans-xdebug-issue非常方便解决我的问题。我只需要在我的相关php.ini中设置以下标志。

xdebug.remote_enable = 1

xdebug将继续等待会话但在设置远程调试标志后会话等待问题,断点问题以及我定义的xdebug日志文件也开始记录事务。

答案 6 :(得分:0)

又一个可能的解决方案,也是唯一一个对我有用的解决方案,在尝试了这篇文章以及其他许多内容之后......

我正在Windows上的Eclipse Neon上通过XDEBUG调试PHP项目。源是远程Linux,通过SFTP本地安装为驱动器。这可能是我自己的错,这是没有正确设置的......

在Eclipse中,右键单击您的项目,然后选择Configure,然后选择Add PHP Support。立即开始DLTK索引;在此之前它无论如何都不会开始。

然后我必须打开我的源并通过远程文件资源管理器设置断点。我希望这有助于某人。

答案 7 :(得分:0)

我遇到了同样的问题:Eclipse断点不起作用,xdebug_break()确实有效。我的问题是路径中的空格:

<- breakpoint_set -i 1323 -t line -f file:///Users/admin/Documents/projects/something/path%2520with%2520space/web/index.php -n 223
-> 
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1323" id="385680235"></response>

将路径更改为没有空格的路径后,Eclipse中的断点工作正常。

答案 8 :(得分:0)

解决了! 在NetBeans中创建新项目时,我首先将项目的根文件夹设置为WordPress网站的WordPress主题文件夹。 因此,我创建了一个新项目,其根目录是整个WordPress网站的根目录,而不仅仅是其主题,并且断点开始起作用。哇!

答案 9 :(得分:0)

就我而言:

use system default php.ini configuration 
在PHP可执行文件常规设置中未选择