使用Eclipse调试PHP脚本

3
我一直使用Eclipse 3.4.2与PHPEclipse和Zend Debugger,没有出现任何问题。突然间,我无法对PHP脚本进行调试。我可以正常运行它们,但是当我选择Debug As...时,脚本会显示在Debug窗口中,就像在运行一样,但实际上并没有运行。如果我点击暂停,它会报告在第0行。我可以逐步执行它,如果我恢复,让它保持不动,然后再次暂停,它仍然报告在第0行。
我尝试关闭所有内容,重启系统,并创建一个新项目,但没有成功。
我最近更新了Ubuntu系统,但与PHP或Eclipse无关(据我所知)。XULRunner已更新。
我已经检查了Debug Configs,它已经像之前工作时那样选择了Zend Debugger和PHP可执行文件。我尝试过编辑Source Lookup以确保它正在查找正确的地方。
有什么想法吗?
编辑:eclipse的调试器正在10000端口上监听,我可以正常telnet localhost 10000。当我发送一些垃圾字符时,eclipse弹出一个关于不兼容调试器的错误消息,所以它似乎正在监听。
编辑:我无法弄清楚到底发生了什么,但创建一个新的工作区似乎解决了问题。
更新:我尝试了eclipse -clean(我在ubuntu上),但这并没有帮助我。我找到了.log文件,并注意到以下错误。在启动时:
!ENTRY org.eclipse.osgi 2 1 2009-10-05 17:02:11.979
!MESSAGE NLS missing message: DebugConnectionThread_oldDebuggerVersion in: org.eclipse.php.internal.debug.core.PHPDebugCoreMessages

!ENTRY org.eclipse.osgi 2 1 2009-10-05 17:02:11.980
!MESSAGE NLS missing message: DebugServerTestEvent_success in: org.eclipse.php.internal.debug.core.PHPDebugCoreMessages

!ENTRY org.eclipse.osgi 2 1 2009-10-05 17:02:11.980
!MESSAGE NLS missing message: DebugServerTestEvent_timeOutMessage in: org.eclipse.php.internal.debug.core.PHPDebugCoreMessages

当我尝试启动调试会话时:

!ENTRY org.eclipse.php.debug.core 4 10001 2009-10-05 17:02:23.455
!MESSAGE Can't determine version of the PHP executable

!ENTRY org.eclipse.php.debug.core 4 10001 2009-10-05 17:02:23.983
!MESSAGE PHPDebug plugin internal error
!STACK 0
java.lang.NullPointerException
    at org.eclipse.php.internal.debug.core.preferences.stepFilters.DebugStepFilterController.isFiltered(DebugStepFilterController.java:98)
    at org.eclipse.php.internal.debug.core.zend.debugger.handlers.ReadyNotificationHandler.handle(ReadyNotificationHandler.java:34)
    at org.eclipse.php.internal.debug.core.zend.communication.DebugConnectionThread$InputMessageHandler.run(DebugConnectionThread.java:881)
    at java.lang.Thread.run(Thread.java:636)

我正在尝试查找与此相关的其他信息。

3个回答

3
您提到您无法弄清楚发生了什么,但创建新的工作区似乎解决了问题。这个情况可能只是Eclipse中一个众所周知的问题。基本上,随着时间的推移,系统中会积累一些垃圾。随着这种情况的发生,Eclipse(尤其是插件)开始出现故障。您可以通过在启动Eclipse时使用“-clean”参数来解决此问题(而无需创建新的工作区)。
因此,如果您正在运行Windows,请编辑指向Eclipse的快捷方式,以便您看到:
eclipse.exe -clean

那应该会有所帮助。在这里阅读更多相关信息:保持 Eclipse 运行干净


1

关于Eclipse的一个非常好的特点是它没有安装程序,尽管我看到某些好心的旅行者在某条路上让你可以使用apt-get eclipse。(提示:不要这样做。)

一个不太好的特点是它相当复杂。如果你认为可能已经翻转了它的成千上万个开关之一,只需解压缩存档并进行并行安装即可。Eclipse在这方面表现良好,即使在Windows上也是如此。如果并行安装成功,则至少您知道只是您的工作区或配置问题,如果失败,则需要查找外部原因。(除非您在运行配置中两次犯了同样的错误。)


0

你的防火墙有做任何更改吗?我使用NuSphere的php调试器,它通过TCP套接字进行通信。如果在更新期间修改了防火墙,则防火墙可能会阻止调试器服务器通过本地主机端口与调试器客户端联系。不太确定Eclipse的调试器是如何工作的,但我猜想应该是一样的。

为了好玩,你可以尝试运行snort,看看调试器是否向你发送数据包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接