我在Intellij 8中使用了Java调试器并注意到一个标有“drop frame”的按钮,是否有人知道它的用途是什么?如何/为何使用/有用?
答案 0 :(得分:109)
可以在调试器中查看应用程序的调用堆栈。使用“丢帧”功能,您可以“回退”到先前的堆栈帧,从某种意义上讲,它可以追溯到时间。如果您错过了想要再次看到的关键位置,这有助于重新输入功能。
正如名称“Stack Frame”所暗示的那样,已经对全局状态进行的更改(如静态变量,字段值更改等)将不会被撤消,只会重置局部变量。这可能导致与最初导致断点的路径不同的执行路径。您需要意识到这一点 - 我经常认为它是一个有用的功能,可以探索不同的执行路径,而无需重新启动应用程序或导致当前堆栈的特定冗长进程。结合调试器中可用的变量值的变化,您可以做各种有趣的事情。
请注意,当然,可能发生的任何副作用 - e。 G。网络流量,文件操作,控制台输出等 - 不能倒带。
答案 1 :(得分:13)
调试器中的Drop Frame弹出 当前的堆栈帧和放置 控制回到呼叫 方法,重置任何局部变量。 这对于重复步骤非常有用 通过一个函数,但要注意: 场突变或全球状态 变化将继续存在。
查看更多信息here。
答案 2 :(得分:6)
使用调试器从堆栈中删除帧本质上可以让您“回退”应用程序的执行以达到先前的状态。堆栈框架外的变量不会被还原。
作为旁注,我相信这个功能在Eclipse中被称为“Drop to Frame”,但它的作用相同。