【问题标题】:Xdebug ignores breakpointsXdebug 忽略断点
【发布时间】:2010-08-06 09:16:27
【问题描述】:

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

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

但这似乎并不能解决我的问题。 Xdebug 模块是通过 zend_extension=path/to/xdebug 加载的。所以在

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

我还查看了 php5/apache 和 php5/cli php.ini 以确保它没有在某处加载 extension=。我还检查了 phpinfo() 找到的“已解析的其他 .ini 文件”,它似乎没有其他地方加载。

通过执行 php -m 可以看到加载的 Xdebug 模块在

[PHP Modules]

[Zend Modules]

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

如果我设置了 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。 有什么建议可以让我接下来看看吗?

【问题讨论】:

  • 似乎怀疑它出现在 PHP 模块和 Zend 模块中,但我不知道这是怎么发生的。您是否尝试过xdebug.org/find-binary.php 的“量身定制的安装说明”?
  • 您好,很抱歉周末回复晚了,我周三之前没有回到办公室。不过那我试试看,谢谢。
  • 您好,刚刚尝试了定制安装说明,但没有改变任何东西。实际上,我认为这与 pecl install 所做的几乎相同。它还告诉我“你已经在运行最新的 Xdebug 版本了”。
  • 我遇到了完全相同的问题,在堆栈溢出时发现了这个问题,然后在 Google 中搜索了路径映射。这篇文章终于为我解决了问题blogs.oracle.com/netbeansphp/entry/path_mapping_in_php_debugger

标签: php eclipse netbeans xdebug


【解决方案1】:

包含断点的文件的路径似乎有问题。

<- 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 端口映射配置,但希望我为您指明了正确的方向。

【讨论】:

  • 谢谢!这确实为我指明了正确的方向。问题在于路径映射。似乎您必须映射所有需要的文件夹,不仅是父文件夹,还请参见:wiki.netbeans.org/…
  • 虽然我现在无法测试所有文件夹的映射,但 Netbeans 似乎有一个错误,所以我目前无法添加/编辑服务器路径。如果其他人解决了这个问题,这看起来应该很有用。对我来说,它现在奇怪地工作了,也没有任何映射。所以再次感谢你指出我正确的方向;)
  • 谢谢!虽然我偶然发现了“端口映射”。应该是“路径映射”吧?
【解决方案2】:

对我来说,问题是“项目属性 > 源 > Web Root:”没有设置(它的值是默认值)。

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

【讨论】:

  • 我说的是Netbeans 8.0中的项目设置
【解决方案3】:

在你的 php.ini 文件中,设置这个指令:

report_zend_debug = 1

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

【讨论】:

    【解决方案4】:

    转至:Project &gt; Properties &gt; Run Configuration &gt; Advanced (button)

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

    【讨论】:

      【解决方案5】:

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

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

      但为了真正进行调试,必须启用它。添加这一行:

      xdebug.remote_enable=1
      

      然后phpinfo() 将报告一个正常运行的xdebug:

      【讨论】:

      • +1 图像(它让我重新意识到我最近重新安装了 WAMP 并忘记再次更改)如果您使用的是 WAMP,请从 WAMP 图标进入您的 php.ini 并更改行到“xdebug.remote_enable = on”(来自“关闭”)
      【解决方案6】:

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

      xdebug.remote_enable=1

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

      【讨论】:

        【解决方案7】:

        在尝试了这篇文章和许多其他文章中的所有内容之后,另一种可能的解决方案,唯一对我有用的解决方案......

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

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

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

        【讨论】:

          【解决方案8】:

          我遇到了同样的问题: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 中的断点工作正常。

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              就我而言:

              use system default php.ini configuration 
              

              未在 PHP Executable 常规设置中选择

              【讨论】:

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