方法断点可能会显着减慢debugging速度

每当向方法声明的行添加断点(在Intellij IDEA或Android Studio中)时,都会popup一个对话框:

方法断点可能会显着减慢debugging速度

为什么会大大减慢debugging,是我的问题? 将断点放在函数的第一行有什么不同?

谢谢!

Solutions Collecting From Web of "方法断点可能会显着减慢debugging速度"

我环顾了一下,在Intellij Documetation中看到这个post:

方法断点

方法断点响应程序进入或退出特定的方法。 他们让你通过你想调查的方法来定位你的debugging会话,而不是通过行号。 方法断点使您可以按照方法级别的程序stream程以及检查进入和退出条件。 请注意,使用方法断点可能会降低正在debugging的应用程序的速度。

我想它会在进入方法之前停止程序,以便在进入方法之前评估参数等。

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

让您按照方法级别的程序stream程以及检查进入和退出条件

我想这会比停止执行程序花费更多的时间

我的理解是,代码必须解释性地运行(而不是使用JIT预编译?),当在方法条目上设置断点时。

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