为什么XDebug会忽略NetBeans 6.8中的断点?

时间:2012-04-02 22:40:46

标签: php debugging netbeans localhost xdebug

我在我的Ubuntu 10.04笔记本电脑上运行PHP 5.3.2,Apache 2.2.14和xdebug 2.2.0rc1,我正在尝试在Netbeans 6.8中的localhost上设置调试。

我的问题是我在Netbeans中设置的断点被忽略了。否则它似乎正常工作。例如,我得到了漂亮的var_dumps,xdebug跟踪,xdebug远程日志,我也可以打勾,以便它在PHP脚本的第一行打破。

基于其他网站和SO问题(例如SO1SO2SO3)我已检查了以下所有内容:

  • 我正在编辑正在编辑的php.ini文件
  • xdebug被加载为zend_extension = / full / path / to / xdebug.so(不是extension = xdebug.so)
  • 在PHP中禁用了线程安全,我使用的是非线程安全版本的xdebug
  • 在xdebug远程日志中断点的路径是正确的(请参阅此列表下方的代码段,该片段中的路径和其他未显示的路径是正确的)

    <- breakpoint_set -i 1014 -t line -s enabled -f file:///var/www/mockup/test.php -n 8 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1014" state="enabled" id="135610002"></response>
    
  • 手动调用xdebug_break()工作

我还尝试在Netbeans项目属性中设置服务器路径和项目路径,因为感觉这可能是问题,但它没有帮助。目前,我的服务器路径为/var/www/mockup,项目路径为/common/rsync/Dropbox/active-archives/code/Locus/mockup

但是,/var/www/mockup无论如何都是较长路径的符号链接,所以我甚至不知道这是否有必要?无论我是否指定路径映射,它都不起作用......

3 个答案:

答案 0 :(得分:2)

在@ Derick的输入基础上,有效的解决方案是:

  • 更改NetBean项目属性以将文件从源文件夹复制到/var/www/Locus
  • 从“运行配置”
  • 中删除所有路径映射
  • 将浏览器指向localhost/Locus/

换句话说,它不仅是导致问题的源文件路径中的符号链接,而且也是服务器路径中的符号链接。

答案 1 :(得分:1)

Xdebug(通过PHP)尚不支持符号链接(http://bugs.xdebug.org/view.php?id=627存在问题)。 PHP / Xdebug始终使用完全展开的链接,因此您需要确保netbeans设置断点,如:

breakpoint_set -i 1014 -t line -s enabled -f file:///common/rsync/Dropbox/active-archives/code/Locus/mockup/test.php

您必须设置路径映射。在确认breakpoint_set包含正确的路径之后,它应该可以正常工作。

答案 2 :(得分:0)

以下是我修复它的方法:

在我的Mac上的本地xampp环境中,我已经设置了一个映射到apache根目录(/ source / my_project)之外的目录的vhost。我在Net Beans中的项目设置为使用/ source / my_project作为项目的位置。所以我有“无”的URL映射问题,因为我在Apache vhost中使用的路径与我在Net Beans中使用的路径没什么不同。或者也许Apache认为这个目录与Net Beans不同,我无法让路径映射工作。但是,当我将/ source / my_project移动到/ apache / htdocs / my_project并且我将该路径用于我的Net Beans项目源并将我的vhost映射到该目录时,调试器工作正常。附:我在/ source / my_project上设置了版本控制,所以我将my_project更改为符号链接,它仍然在subversion中工作。