有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java IntelliJ调试器卡住了

我正在调试一个普通的Java应用程序,没有GUI,只是在出现问题时对主线程进行大量计算和~5次堆栈调用。基本上,它一直在局部变量表中显示“收集数据”

enter image description here

因此,我尝试在按下“恢复”键后立即添加断点,而不是一步一步地进行。现在它说“等待最后一个调试器命令完成”。 enter image description here

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


共 (6) 个答案

  1. # 1 楼答案

    我曾经遇到过一次(版本2020.3.3)和“使缓存失效”并重新启动解决了它

  2. # 2 楼答案

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

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

    如果您确实需要挂起所有线程进行调试,这将没有帮助,但它消除了“收集数据…”和“等待最后一个调试器命令完成”消息。该设置还将持续用于后续断点,因此您只需更改一次

  3. # 3 楼答案

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

  4. # 4 楼答案

    在IntelliJ(2017.1.4社区版)上,以下内容为我解决了这个问题:

    • 文件->;背景
    • 输入“toString”
    • 导航到构建、执行、部署->;调试器->;数据视图->;爪哇
    • 找到“启用”toString()“对象视图:”复选框
    • 取消选中该框

    重新运行调试器

  5. # 5 楼答案

    对我有效的修复方法是删除方法断点。这使它变得超快

  6. # 6 楼答案

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

    以下是命中断点的线程的堆栈跟踪(在一行上,该行刚刚尝试测试我的类的布尔属性):

    Hung Breakpoint Stacktrace

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

    Work Around

    如果您的问题再次出现,我建议进行线程转储(在IDE内部或外部),并查看您的线程正在做什么