方法断点可能会大大减慢调试速度

时间:2015-06-25 22:46:24

标签: java android debugging intellij-idea

每当在方法声明的行中添加断点时(在Intellij IDEA或Android Studio中),都会出现一个弹出窗口:

  

方法断点可能会大大减慢调试速度

为什么显着会减慢调试速度,这是我的问题?将断点放在函数的第一行有什么不同?

谢谢!

3 个答案:

答案 0 :(得分:8)

我环顾四周,看到Intellij Documetation中的这篇文章:

  

方法断点

     

方法断点用于响应程序进入或退出特定方法。它们允许您按照要调查的方法而不是按行号来定位调试会话。方法断点允许您遵循方法级别的程序流程以及检查进入和退出条件。请注意,使用方法断点可能会降低正在调试的应用程序的速度。

我猜它会在程序进入方法之前就停止程序,因此您可以在输入方法之前评估参数等。

它大大减慢的原因是(这是我可以收集的,因为这是所有我可以在Intellij的文档中找到方法断点)它必须:

  

让您遵循方法级别的程序流程以及检查进入和退出条件

我认为这比停止程序的执行需要更长的时间

答案 1 :(得分:0)

我的理解是,当在方法入口上设置断点时,代码必须以解释方式运行(而不是使用JIT进行预编译?)。

如果你在方法的第一行设置断点,我怀疑代码中的行号索引可以用来简单地交换原始操作码的break操作码,因此应用程序全速运行。 (调试时对我来说似乎还很慢;)

答案 2 :(得分:0)

IntelliJ团队有一个简单的解释:“由于JVM设计,方法断点将大大降低调试器的速度,评估起来很昂贵”

https://intellij-support.jetbrains.com/hc/en-us/articles/206544799-Java-slow-performance-or-hangups-when-starting-debugger-and-stepping

相关问题