一尘不染

Eclipse调试器始终在ThreadPoolExecutor上进行阻止,而没有任何明显的例外,为什么?

tomcat

我正在Eclipse上做我通常的项目,这是一个用Spring,Hibernate等制作的J2EE应用程序。为此,我正在使用Tomcat
7(没有特殊原因,我没有利用任何新功能,我只是想尝试一下)。每次我调试应用程序时,都会碰到Eclipse调试器弹出它就像到达断点一样的情况,但事实并非如此,实际上它在Java源文件上停止ThreadPoolExecutor。控制台上没有堆栈跟踪,只是停止了。然后,如果我单击“简历”,它将继续运行,并且该应用程序可以完美运行。这是在调试器窗口中显示的内容:

Daemon Thread ["http-bio-8080"-exec-2] (Suspended (exception RuntimeException)) 
    ThreadPoolExecutor$Worker.run() line: 912   
    TaskThread(Thread).run() line: 619

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

有什么线索吗?


阅读 409

收藏
2020-06-16

共1个答案

一尘不染

发布的堆栈跟踪指示在Daemon线程中遇到RuntimeException。除非原始开发人员捕获并处理了异常,否则通常不会在运行时捕获该异常。

通常,将Eclipse中的调试器配置为在 所有未捕获的异常
上在引发异常的位置挂起执行。请注意,异常可能在以后处理,在堆栈框架中降低,并且可能不会导致线程终止。这可能是观察到的行为的原因。

配置Eclipse的行为 很简单:
转到“ 窗口” > “首选项” >“ Java” >“ 调试”, 然后取消选中“ 在未捕获的异常上暂停执行”

2020-06-16