使用 Eclipse 调试 PHP 脚本
我已经使用 Eclipse 3.4.2 与 PHPEclipse 和 Zend Debugger 一段时间了,没有出现任何问题。突然,我无法调试 PHP 脚本。我可以很好地运行它们,但是当我选择调试为...时,脚本会在“调试”窗口中显示,就像它正在运行一样,但事实并非如此。如果我单击“暂停”,它会报告位于第 0 行。我可以单步执行它,如果我恢复,让它静置,然后再次暂停它,它仍然报告位于第 0 行。
我尝试关闭所有内容,重新启动我的系统,并创建一个新项目,但运气不佳。
我最近更新了Ubuntu系统,但是没有任何与PHP或Eclipse相关的内容(据我所知)。 XULRunner 已更新。
我检查了调试配置,它选择了 Zend 调试器和 PHP 可执行文件,就像以前工作时一样。我尝试过编辑源查找以确保它在正确的位置。
有什么想法吗?
编辑: 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)
我试图看看是否可以追踪到其他任何内容。
I've been using Eclipse 3.4.2 with PHPEclipse and Zend Debugger for some time without issue. Suddenly, I cannot debug the PHP scripts. I can run them fine but when I select Debug As... the script shows in the Debug window as if it were running, but it is not. If I click pause it reports as being on line 0. I can step through it, if I resume, let it sit and then pause it again it still reports being on line 0.
I've tried closing everything all down, restarting my system, and creating a new project without luck.
I had recently updated the Ubuntu system, but there was nothing related to PHP or Eclipse (that I could tell). XULRunner was updated.
I've checked the Debug Configs, it has the Zend Debugger and the PHP Executable selected as they had been before when working. I've played around with Editing the Source Lookup to make sure it's looking at the right place.
Any ideas?
Edit: eclipse's debugger is listening on port 10000 i can telnet localhost 10000 fine. when i send some garbage characters eclipse pops up an error message about incompatible debugger so it seems to be listening
Edit: I wasn't able to figure out what was really going on but creating a new workspace seemed to do the trick
Update: I tried eclipse -clean (i'm on ubuntu) but that didn't help me. I found the .log file and noticed the following errors. On Startup:
!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
After I try to start a debug session:
!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)
I'm trying to see if I can track down anything else given this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您提到您无法弄清楚发生了什么,但创建一个新的工作区似乎可以解决问题。该案例可能只是 Eclipse 的一个众所周知的问题。基本上,随着时间的推移,系统中的缺陷往往会逐渐增多。当这种情况发生时,Eclipse(尤其是插件)开始崩溃。您可以在启动 Eclipse 时使用 -clean 参数来解决此问题(无需创建新工作区)。
因此,如果您运行的是 Windows,请编辑指向 Eclipse 的快捷方式,以便您看到:
这应该会有所帮助。在此处阅读有关它的更多信息:保持 Eclipse 干净运行
You mentioned that you couldn't figure out what was going on, but creating a new workspace seemed to solve the problem. The case is probably just a well-known issue with Eclipse. Basically, over time, cruft tends to build up in the system. As this happens, Eclipse (and particularly the plugins) start to break. You can solve this (without creating a new workspace) by using the -clean argument when starting Eclipse.
So, if you are running Windows, edit the shortcut pointing to Eclipse so that you see:
That should help. Read more information about it here: Keeping Eclipse Running Clean
eclipse 真正好的一点是它没有安装程序,尽管我在某条道路上看到一些好心的旅行者使您可以
apt-get eclipse
。 (提示:不要这样做。)不太好的事情之一是它相当复杂。如果您认为您可能已经翻转了它拥有的数千个开关之一,只需解压存档并进行并行安装即可。即使在 Windows 上,Eclipse 也能表现良好。如果并行安装有效,那么至少您知道这只是您的工作区或配置,如果没有,您知道要从外部查看。 (呃,除非你在运行配置中犯了两次同样的错误。)
One of the really nice things about eclipse is that it has no installer, although I see some well-intentioned traveller on a certain road has made it possible for you to do
apt-get eclipse
. (Hint: don't do that.)One of the not-so-nice things is that it is rather complex. If you think you may have flipped one of the thousands of switches it has, just unpack the archive and do a parallel install. Eclipse is well-behaved that way, even on windows. If the parallel install works, then at least you know it's just your workspace or configuration, and if it doesn't, you know to look externally. (Err, unless you made the same mistake twice with your run config.)
您的防火墙是否进行过任何更改?我使用 NuSphere 的 php 调试器,它通过 TCP 套接字进行通信。如果您的防火墙在更新期间被修改,您的防火墙可能会阻止调试器服务器通过其(可能)运行的本地主机端口联系您的调试器客户端。不太清楚 Eclipse 的调试器是如何工作的,但我猜也是这样。
为了好玩,您可以尝试运行 snort 来查看调试器是否正在向您发送数据包。
Were any changes made to your firewall? I use NuSphere's php debugger, and it communicates via a TCP socket. If your firewall was modified during the update, your firewall could be preventing the debugger server from contacting your debugger client via the localhost port it (maybe) runs on. Not too sure how Eclipse's debugger works, but I would guess the same way.
For kicks, you can try running snort to see if the debugger is sending packets to you.