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

时间:2010-03-02 23:49:03

标签: java debugging intellij-idea

我在Intellij 8中使用了Java调试器并注意到一个标有“drop frame”的按钮,是否有人知道它的用途是什么?如何/为何使用/有用?

3 个答案:

答案 0 :(得分:109)

可以在调试器中查看应用程序的调用堆栈。使用“丢帧”功能,您可以“回退”到先前的堆栈帧,从某种意义上讲,它可以追溯到时间。如果您错过了想要再次看到的关键位置,这有助于重新输入功能。

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

请注意,当然,可能发生的任何副作用 - e。 G。网络流量,文件操作,控制台输出等 - 不能倒带。

答案 1 :(得分:13)

  

调试器中的Drop Frame弹出   当前的堆栈帧和放置   控制回到呼叫   方法,重置任何局部变量。   这对于重复步骤非常有用   通过一个函数,但要注意:   场突变或全球状态   变化将继续存在。

查看更多信息here

答案 2 :(得分:6)

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

作为旁注,我相信这个功能在Eclipse中被称为“Drop to Frame”,但它的作用相同。