我是Intellij Idea的新手,我发现它是一个很好的IDE。我正在将它用于分布式系统项目(并且可以想象)我大量使用线程和并发编程以及超时等工具。
我的问题是,当调试器在断点线上停止时,似乎调试器不会停止时间流。
我会试着更好地解释自己。我有一个future
我用作线程任务的超时:如果它在某个时间内没有完成任务,那么会出现TimeoutException
并做一些事情,否则做其他事情。问题是,使用调试器时,这个超时似乎不会在断点行期间停止,因此程序的行为会因调试器或正常执行而有所不同。
这是正常的吗?有什么方法可以解决它吗?
答案 0 :(得分:5)
试试这个:运行 - >查看断点 - >找到你的断点 - >第一个复选框(Suspend
)。尝试将暂停模式设置为Thread
而不是All
。因此,只有断点发生的线程才会被挂起而不是应用程序中的所有线程。或者尝试为此断点禁用Suspend
。您可以将某些消息记录到控制台,而不是暂停。查看Log message to console
或Log evaluated expression
选项。这适用于Idea 12.据我所知,Idea 14有相同的选项。
答案 1 :(得分:0)
是的,这是正常的,这与任何其他调试器一样。 TimeoutException
基于系统中传递的实际时间发生,并且不幸的是,没有调试器能够停止时间流。