IntelliJ调试器卡住了

时间:2016-06-16 15:26:51

标签: java debugging intellij-idea

我正在调试一个普通的Java应用程序,没有GUI,只是大量的计算,并且当问题发生时,主线程的堆栈中有~5次调用。基本上它一直在局部变量监视中说“收集数据”。

enter image description here

因此,我没有一步一步地尝试在按“恢复”后立即添加断点。现在它说“等到最后一个调试器命令完成”。 enter image description here

以前有人有这个问题吗?更改调试器是解决这个问题的唯一方法吗?

6 个答案:

答案 0 :(得分:24)

在IntelliJ(2017.1.4社区版)上,以下问题解决了我的问题:

  • 文件>设置
  • 输入“toString”
  • 导航到构建,执行,部署 - >调试器 - >数据视图 - > Java
  • 找到“启用'toString()'对象视图:”复选框
  • 取消选中

重新运行调试器。

答案 1 :(得分:1)

我刚遇到了同样的问题。在我的例子中,它是断点堆栈跟踪中的一个类(KafkaStream),带有“坏”toString方法。 toString方法阻塞并因此挂起调试器。我测试了主线代码中的toString方法,它挂起了主线程(即这不是调试器特定的问题)。

这是我的线程到达断点的堆栈跟踪(在一条试图测试我的类的布尔属性的行上):

Hung Breakpoint Stacktrace

Intellij提供了一种解决我的问题的方法。它允许您覆盖调试器呈现类的方式:

Work Around

如果您的问题回来了,我建议您进行一次线程转储(在IDE内部或外部)并查看您的主题正在做什么。

答案 2 :(得分:0)

以下内容已在IntelliJ 2018.2.4上为我修复:

  • 右键单击断点
  • 切换设置以暂停“线程”而不是“全部”

如果您实际上需要挂起所有线程进行调试,这将无济于事,但是它为我消除了“正在收集数据...”和“正在等待直到最后一个调试器命令完成”消息。该设置还将保留给后续断点,因此您只需更改一次即可。

答案 3 :(得分:0)

对我有用的解决方法是删除方法断点。那使它变得超快。

答案 4 :(得分:0)

在大多数情况下,这是因为在调试时添加了手表。 清除将导致递归执行与代码中相同的语句的watch语句。 在调试之前,请始终保持手表清洁。

答案 5 :(得分:0)

它发生在我身上一次(在 2020.3.3 版本上)并且“使缓存无效”并重新启动解决了它。