Eclipse和NetBeans PHP Xdebug会话永远不会完成

时间:2017-05-15 17:32:01

标签: php eclipse netbeans xdebug

我正在使用带有PHP 7.1的UniServer Zero XIII。从phpinfo.php文件中,我可以看到xdebug已启用:

enter image description here

当我尝试调试源代码并在NetBeans上使用断点时,XDebug会话从未完成:

enter image description here

当我从Web浏览器看到Web应用程序的执行时,它会继续尝试加载页面,但它永远不会完成。

我在Eclipse上遇到同样的事情:

enter image description here

我试图理解为什么Xdebug会话永远不会完成,以及我需要做些什么来解决它。谢谢。

2 个答案:

答案 0 :(得分:0)

我想也许找到了解决方案,问题是你删除了元数据:

当项目(包括源根)被删除或移出NetBeans之外并且NetBeans关闭时,再次启动NetBeans后,属于不再存在的源的换行符将被删除。

因此,恕我直言,在你的情况下,要么抛出一些例外,这会中断断点消除,哪些会出现在你的messages.log文件中,或者你已经删除了没有源的项目元数据。

这是我能够重现您的问题的唯一情况:

1)创建一个Servlet2Stateless示例项目(或任何Java项目应该工作    这样恕我直言)

2)在“项目”窗口中右键单击项目,然后选择“复制...”

3)按复印按钮

4)从复制的项目中打开Servlet2Stateless.java文件    (Servlet2Stateless_1)

5)将断点提交到第72行

6)调试Servlet2Stateless_1项目后暂停    断点,按继续并完成调试器会话。

7)删除你的proyect_1项目,但一定不要检查    "同时删除..."下的来源。

8)调试原始项目

9)您收到错误消息    "无法提交断点LineBreakpoint Servlet2Stateless.java:72,     原因:找不到URL的源根    '文件:/ TMP /的NetBeansProjects / ServletStateless_1 / SRC / JAVA / servlet的/无状态/     Servlet2Stateless.java&#39 ;.验证项目源的设置。"

10)这条消息是无害的,但如果你想摆脱它,那很容易     点击" Invalid LineBreakpoint Servlet2Stateless.java:72"线,     这将打开源文件并删除断点。

由于此问题并不严重,我将优先级降低到P3。 我们可以考虑通过忽略属于源根的断点而没有相应的项目来修复这个问题,而不是在Sources窗口中添加为额外的源根。

检查整个信息here

答案 1 :(得分:0)

我没时间找到解决此问题的方法。不幸的是,我只收到了这个问题的一个答案,但它并没有解决我的问题。我不得不为Zend Studio 13.6购买Zend Studio Perpetual许可证,现在我可以使用断点,使用Zend Debugger(XDebug的竞争对手)调试我的代码,一切正常。

我尽可能多地尝试修复我在NetBeans和Eclipse上使用XDebug遇到的问题,但是我没时间了,我需要继续前进。我必须为我的Zend Studio Perpetual许可证支付89美元,其中包括一年的免费升级。我想通过使用Eclipse或NetBeans来节省资金,但是在这种情况下,这个XDebug问题迫使我从开源转向专有解决方案。

2017年8月29日编辑:

我终于让XDebug在Zend Studio上工作了。我无法在UniServer Zero XIII上快速配置Zend Debugger,所以我对下面的文件进行了修改:C:[my path] \ UniformServer13_3_2_ZeroXIII \ UniServerZ \ core \ php71 \ php_production.ini:

[xdebug]
#zend_extension=${US_ROOTF}/core/php71/extensions/php_xdebug.dll
zend_extension="C:\[my path]\UniformServer13_3_2_ZeroXIII\UniServerZ\core\php71\extensions\php_xdebug.dll"
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
#xdebug.remote_port=9000
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.idekey=default

我将端口从9000更改为9001,并使用带有双引号的绝对路径指向zend_extension以指定php_xdebug.dll扩展所在的位置。我不确定这最后一步是否有所不同,或者只是将端口从9000更改为9001然后重新启动Apache。但至少现在我可以配置断点来停止那里的程序并查看我想要评估的变量的值。