代码之家  ›  专栏  ›  技术社区  ›  mik

使用eclipse调试php脚本

  •  3
  • mik  · 技术社区  · 17 年前

    我已经将Eclipse3.4.2与phpeclipse和zend调试器一起使用了一段时间,没有问题。突然,我无法调试php脚本。我可以很好地运行它们,但是当我选择 调试为… 该脚本显示在调试窗口中,就像它正在运行一样,但它不是。如果我单击“暂停”,它将报告处于第0行。我可以单步执行,如果我继续,让它停下来,然后再次暂停它,它仍然报告在第0行。

    我试着关闭所有的东西,重新启动我的系统,并创建一个新的项目没有运气。

    我最近更新了ubuntu系统,但与php或eclipse没有任何关系(我可以说)。Xulrunner已更新。

    我已经检查了调试配置,它选择了zend调试器和php可执行文件,就像以前工作时一样。我试着编辑源代码查找以确保它在正确的位置。

    有什么想法吗?

    编辑:eclipse的调试器正在监听端口10000 i can telnet localhost 10000 fine。当我发送一些垃圾字符时,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 回复  |  直到 16 年前
        1
  •  3
  •   JasCav    17 年前

    你提到你不知道发生了什么,但是创建一个新的工作区似乎解决了这个问题。这个案例可能只是eclipse的一个众所周知的问题。基本上,随着时间的推移,cruft倾向于在系统中积累起来。当这种情况发生时,eclipse(尤其是插件)开始崩溃。您可以在启动eclipse时使用-clean参数来解决这个问题(无需创建新的工作区)。

    因此,如果运行的是windows,请编辑指向eclipse的快捷方式,以便看到:

    eclipse.exe -clean
    

    这应该会有帮助。请在此处阅读更多信息: Keeping Eclipse Running Clean

        2
  •  1
  •   DigitalRoss    17 年前

    eclipse的一个非常好的地方是它没有安装程序,尽管我看到一些好心的旅行者在某条道路上让您可以这样做 apt-get eclipse . (提示:不要这样做。)

    其中一件不太好的事情是它相当复杂。如果您认为您可能已经翻转了它拥有的数千个交换机中的一个,那么只需解压缩存档并进行并行安装。即使在windows上,eclipse也表现得很好。如果并行安装可以工作,那么至少你知道它只是你的工作区或配置,如果不是,你知道从外部看。(错误,除非您在运行配置中犯了两次相同的错误。)

        3
  •  0
  •   Zak    17 年前

    你的防火墙有什么变化吗?我使用nusphere的php调试器,它通过tcp套接字进行通信。如果在更新过程中修改了防火墙,则防火墙可能会阻止调试器服务器通过其运行的本地主机端口与调试器客户端联系。不太清楚eclipse的调试器是如何工作的,但我也会这么想。

    对于kicks,您可以尝试运行snort来查看调试器是否正在向您发送数据包。

    推荐文章