Intellij Idea 调试线程

Intellij Idea debug with thread

我是 Intellij Idea 的新手,我觉得它很好 IDE。我将它用于分布式系统项目并且(如您所想)我大量使用线程和并发编程以及超时等工具。

我的问题是,当调试器在断点行停止时,调试器似乎没有停止时间流。

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

有那么正常吗?有什么办法可以解决吗?

是的,这是正常的,并且这适用于任何其他调试器。 TimeoutException 根据系统中实际流逝的时间发生,不幸的是没有调试器能够停止时间的流动。

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