【问题标题】:Why is XDebug ignoring breakpoints from NetBeans 6.8?为什么 XDebug 会忽略来自 NetBeans 6.8 的断点?
【发布时间】:2012-04-02 22:40:46
【问题描述】:

我在我的 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 远程日志中是正确的(参见此列表下方的代码 sn-p,该 sn-p 中的路径和其他未显示的路径是正确的)

    <- 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 无论如何都是指向更长路径的符号链接,所以我什至不知道这是否有必要?无论我是否指定路径映射,它都不起作用...

【问题讨论】:

  • 离题:您还没有升级到 NetBeans 7.1 的任何原因?
  • @c69 - 我忘了,可能是 Ubuntu 10.04 上的默认安装?

标签: php debugging netbeans localhost xdebug


【解决方案1】:

基于@Derick 的输入,可行的解决方案是:

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

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

【讨论】:

    【解决方案2】:

    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 包含正确的路径后,它应该可以工作。

    【讨论】:

    • 谢谢@derick。昨晚我进行了快速测试,并确认如果我直接在 /var/www 中设置项目,它可以工作。但是我仍然无法让它在其他地方工作 - 也许我的服务器路径映射设置不正确? --- 例如在 xdebug 远程日志中,我使用 file:///common/rsync/Dropbox/active-archives/code/Locus/mockup/test.php 获取条目,我已将服务器路径设置为 /var/www/mockup和 /common/rsync/Dropbox/active-archives/code/Locus/mockup 的项目路径,但它仍然跳过断点?再次感谢!
    【解决方案3】:

    这是我修复它的方法:

    在我的 Mac 上的本地 xampp 环境中,我设置了一个映射到 apache 根目录 (/source/my_project) 之外的目录的虚拟主机。我在 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 中工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2019-12-10
      • 1970-01-01
      相关资源
      最近更新 更多