【问题标题】:Eclipse breaks on processWorkerExitEclipse 在 processWorkerExit 上中断
【发布时间】:2012-04-27 19:45:43
【问题描述】:

在处理了几个请求后,我的 Eclipse 开始使用 processWorkerExit() 方法。

根据link,我知道如何抑制 Eclipse 的中断,但是有什么原因导致代码在这条线上中断。这种情况会不会有内存泄漏?

Tomcat 7.0.27
Eclipse 3.7.2
JDK 7.0.02

【问题讨论】:

    标签: java debugging tomcat thread-safety breakpoints


    【解决方案1】:

    答案在这里:OpenJDK breaks on processWorkerExit with no breakpoint

    默认情况下,在 Eclipse 的调试模式下,未捕获异常中断是 检查。由于您在这里没有 catch 方法,因此很可能是 未捕获的异常被抛出,调试器正在中断 你在抛出异常之前。你可以在 Java->Debug 下的首选项。

    【讨论】:

      【解决方案2】:

      调试器在该行停止的原因是try{} 块中的代码抛出了异常,并且该特定代码行是抛出异常后的下一个可执行代码行。您几乎可以肯定在控制台窗口中看到该异常的堆栈跟踪,因为默认情况下,冒泡到Thread.run() 的未捕获异常将被发送到stderr。

      至于您关于是否可能存在内存泄漏(或更可能是 Java,资源泄漏)的问题:答案是肯定的,可能。但是该代码中没有任何内容表明存在 。如果有这样的泄漏,几乎可以肯定是因为task 实现中的异常处理不正确。

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。如果您没有记录异常,它会在您的 try/catch 子句中中断。尝试像这样向 LogCat 插入断点或输出:

        try
        {
           //HERE I'VE PUT ALL THE FUNCTIONS THAT WORK FOR ME
           Log.e("tag", "Sth passed!");
        }
        catch (Exception e)
        {
           //The task failed
           Log.e("tag", e.getMessage());           
        }
        

        如果您没有 try/catch 块,请将其放在上面的代码中。在 LogCat 中,您可以看到在异常之前运行的最后一行代码,它将帮助您定位代码中的错误,如下所示:

        08-28 05:49:52.321: E/SQLiteDatabase(834): at java.lang.Thread.run(Thread.java:841)

        【讨论】:

          猜你喜欢
          • 2011-11-19
          • 1970-01-01
          • 2017-01-05
          • 1970-01-01
          • 2023-04-10
          • 2015-03-22
          • 1970-01-01
          • 1970-01-01
          • 2012-10-12
          相关资源
          最近更新 更多