我的项目中有一个长期运行的Task
,我很难调试。据我了解,Task
永远不会抛出异常,也不允许其中的任何代码这样做。
在测试应用程序时,我遇到了许多情况,执行只是挂起,没有错误,没有警告,没有。
现在,我已经能够捕捉Throwable
而不是看看是什么导致了这个问题,但这似乎是一个糟糕的想法,并且创造了比必要更多的工作。
所以我的问题是,作为业余程序员,当我看不到异常时,我该如何调试我的Task中的代码?
一些方法:
1)显示足够的日志(例如:System.out
,logback
,log4j2
)
void taskMethod() {
System.out.println("Tip1");
doSomething1();
System.out.println("Tip2");
doSomething2();
System.out.println("task over");
}
2)当任务挂起而没有退出时,您可以使用jstack
显示堆栈以查看任务挂起的位置。
3)使用像Intellij IDEA
或Eclipse
这样的IDE,在调试程序时它会挂起,只需在调试工具栏中单击“中断”或“暂停”,然后你就有机会调试程序。