Intellij 调试器缓慢: 方法断点可能会显著降低调试速度

当我启动 intellij 调试器时,它将显示您可以在屏幕快照中看到的提示。 调试器启动需要很长时间,如何解决这个问题呢

70476 次浏览

关闭方法断点。您可以通过 Run | View Breakpoints (Ctrl-Shift-F8)查看所有断点

enter image description here

在 IDEA 2017.1中,引入了仿真方法断点: < a href = “ https://www.jetbrains.com/help/IDEA/using-Breakpoints.html # Method _ breakpoint”rel = “ noReferrer”> https://www.jetbrains.com/help/IDEA/using-Breakpoints.html#method_breakpoint 它们允许在不影响性能的情况下使用方法断点。 默认情况下启用。

来自 JetBrains 团队: “由于 JVM 的设计,方法断点会大大降低调试器的速度,评估它们的成本很高。删除方法断点,并考虑使用常规的行断点。”.参见 更多

长话短说,根本问题似乎是方法断点是通过使用 JPDA方法输入方法退出特性来实现的。这个实现要求 JVM 在每次 任何线程进入 任何方法以及 任何线程退出 任何方法时触发一个事件。

我遵循的实用建议是: 1. 在应用程序启动时静音所有断点 仅在调试该流时启用断点。

当然,如果你试图调试应用程序启动过程中发生的某些事情,这是没有帮助的。

在代码中查找红色菱形图标(不是红色圆圈) ,它们代表方法断点。最有可能的情况是在 Kotlin 将它们设置为 get ()/set ()方法。

enter image description here

从调试面板中关闭方法断点。 这是一个截图。

在我的案例中,我使用 Android Studio,当我在 method name line(称为 Java Method Break-Point)上设置断点时,Android Studio 向我展示了这个警告和调试是如此之慢..。

通过 removing this Break-Point我的问题解决了..。

enter image description here

enter image description here

查看断点-(Ctrl-Shift-F8) 删除所有方法断点。 以调试模式重新运行应用程序。 它在工作