首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse调试器总是在ThreadPoolExecutor上阻塞,没有任何明显的异常,为什么?

Eclipse调试器总是在ThreadPoolExecutor上阻塞,没有任何明显的异常,为什么?
EN

Stack Overflow用户
提问于 2011-06-09 17:07:53
回答 4查看 64.1K关注 0票数 210

我正在Eclipse上做我常用的项目,它是一个J2EE应用程序,使用了Spring、Hibernate等等。我使用Tomcat7来做这件事(没有特别的原因,我没有开发任何新功能,我只是想尝试一下)。每次我调试我的应用程序时,Eclipse调试器就像它到达了断点一样弹出,但事实并非如此,实际上它在一个为ThreadPoolExecutor的Java源文件上停止。控制台上没有堆栈跟踪,它只是停止。然后,如果我点击resume,它就会打开,应用程序就会完美地工作。以下是调试器窗口中显示的内容:

代码语言:javascript
复制
Daemon Thread ["http-bio-8080"-exec-2] (Suspended (exception RuntimeException)) 
    ThreadPoolExecutor$Worker.run() line: 912   
    TaskThread(Thread).run() line: 619

我真的无法解释这一点,因为我根本没有使用ThreadPoolExecutor。必须是来自Tomcat、Hibernate或Spring的内容。这非常烦人,因为我总是要在调试过程中恢复。

有什么线索吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-09 18:01:14

posted堆栈跟踪表示在守护程序线程中遇到了RuntimeException。这通常是在运行时未捕获到的,除非原始开发人员捕获并处理了异常。

通常,Eclipse中的调试器被配置为对所有未捕获的异常在抛出异常的位置挂起执行。请注意,异常可能会在稍后处理,在堆栈帧的较低位置,并且可能不会导致线程被终止。这将是观察到的行为的原因。

配置Eclipse的行为非常简单:

转到Window > Preferences > Java > Debug并取消选中Suspend execution on uncaught <代码>E211。

票数 295
EN

Stack Overflow用户

发布于 2013-04-04 17:18:51

有一个更具体的解决方案,它可以防止Eclipse在仅从给定类抛出的RuntimeException上中断。

从调试角度添加新的选定异常断点位置从调试角度转到其properties

  • Go to Filtering

  • In "Restrict to (S)“,单击”AddFiltering

  • In Class"

  • Add java.util.concurrent.ThreadPoolExecutor

  • Untick ,meaning

“<

  1. >G225
票数 48
EN

Stack Overflow用户

发布于 2014-05-06 05:19:28

此行为由tomcat在重新加载when应用程序时触发。它是tomcat "memory leak protection" feature的一部分,强制更新它的线程。

从tomcat:https://issues.apache.org/bugzilla/show_bug.cgi?id=56492的7.0.54和8.0.6版本开始,这个问题已经修复

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6290470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档