在Intellij中使用Java调试器时,“ Drop Frame”是什么意思?


94

我在Intellij 8中使用Java调试器时,注意到有一个标记为“投下帧”的按钮,有人知道这有什么用吗?如何/为什么要使用/有用?

Answers:


128

可以在调试器中查看应用程序的调用堆栈。使用“下降帧”功能,您可以“回退”到先前的堆栈帧,在某种意义上可以追溯到过去。如果您错过了想再次看到的关键点,这对于重新输入功能很有帮助。

就像名称“堆栈框架”所暗示的那样,已经对全局状态进行的更改(例如静态变量,对字段值的更改等)不会被撤消,仅会重置局部变量。这可能会导致执行路径与最初导致断点的路径不同。您需要意识到这一点-我经常认为它是探索不同执行路径的有用功能,而不必重新启动应用程序或导致当前堆栈的特定冗长过程。结合通过调试器也可获得的变量值的更改,您可以做各种有趣的事情。

请注意,当然,任何可能发生的副作用-例如网络流量,文件操作,控制台输出等-都无法解决。


14

调试器中的Drop Frame弹出当前堆栈帧,并将控制权交还给调用方法,从而重置所有局部变量。这对于重复执行某个功能非常有用,但要注意:字段突变或全局状态更改将保留。

在此处查看更多信息。


7

使用调试器从堆栈中删除帧实际上使您可以“回滚”应用程序的执行以达到先前的状态。堆栈框架外部的变量不会还原。

附带说明一下,我相信此功能在Eclipse中称为“拖放框架”,但它具有相同的用途。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.