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