我正在调试一个普通的Java应用程序,没有GUI,只是大量的计算,并且当问题发生时,主线程的堆栈中有~5次调用。基本上它一直在局部变量监视中说“收集数据”。
因此,我没有一步一步地尝试在按“恢复”后立即添加断点。现在它说“等到最后一个调试器命令完成”。
以前有人有这个问题吗?更改调试器是解决这个问题的唯一方法吗?
答案 0 :(得分:24)
在IntelliJ(2017.1.4社区版)上,以下问题解决了我的问题:
重新运行调试器。
答案 1 :(得分:1)
我刚遇到了同样的问题。在我的例子中,它是断点堆栈跟踪中的一个类(KafkaStream),带有“坏”toString
方法。 toString
方法阻塞并因此挂起调试器。我测试了主线代码中的toString
方法,它挂起了主线程(即这不是调试器特定的问题)。
这是我的线程到达断点的堆栈跟踪(在一条试图测试我的类的布尔属性的行上):
Intellij提供了一种解决我的问题的方法。它允许您覆盖调试器呈现类的方式:
如果您的问题回来了,我建议您进行一次线程转储(在IDE内部或外部)并查看您的主题正在做什么。
答案 2 :(得分:0)
以下内容已在IntelliJ 2018.2.4上为我修复:
如果您实际上需要挂起所有线程进行调试,这将无济于事,但是它为我消除了“正在收集数据...”和“正在等待直到最后一个调试器命令完成”消息。该设置还将保留给后续断点,因此您只需更改一次即可。
答案 3 :(得分:0)
对我有用的解决方法是删除方法断点。那使它变得超快。
答案 4 :(得分:0)
在大多数情况下,这是因为在调试时添加了手表。 清除将导致递归执行与代码中相同的语句的watch语句。 在调试之前,请始终保持手表清洁。
答案 5 :(得分:0)
它发生在我身上一次(在 2020.3.3 版本上)并且“使缓存无效”并重新启动解决了它。