Intellij Idea使用线程进行调试

时间:2015-03-04 10:03:17

标签: java multithreading debugging intellij-idea

我是Intellij Idea的新手,我发现它是一个很好的IDE。我正在将它用于分布式系统项目(并且可以想象)我大量使用线程和并发编程以及超时等工具。

我的问题是,当调试器在断点线上停止时,似乎调试器不会停止时间流。

我会试着更好地解释自己。我有一个future我用作线程任务的超时:如果它在某个时间内没有完成任务,那么会出现TimeoutException并做一些事情,否则做其他事情。问题是,使用调试器时,这个超时似乎不会在断点行期间停止,因此程序的行为会因调试器或正常执行而有所不同。

这是正常的吗?有什么方法可以解决它吗?

2 个答案:

答案 0 :(得分:5)

试试这个:运行 - >查看断点 - >找到你的断点 - >第一个复选框(Suspend)。尝试将暂停模式设置为Thread而不是All。因此,只有断点发生的线程才会被挂起而不是应用程序中的所有线程。或者尝试为此断点禁用Suspend。您可以将某些消息记录到控制台,而不是暂停。查看Log message to consoleLog evaluated expression选项。这适用于Idea 12.据我所知,Idea 14有相同的选项。

答案 1 :(得分:0)

是的,这是正常的,这与任何其他调试器一样。 TimeoutException基于系统中传递的实际时间发生,并且不幸的是,没有调试器能够停止时间流。