【发布时间】:2010-03-02 23:49:03
【问题描述】:
我在 IntelliJ 8 中使用 Java 调试器并注意到一个标有“丢帧”的按钮。有人知道这有什么用途吗?如何/为什么会使用/有用?
【问题讨论】:
标签: java debugging intellij-idea
我在 IntelliJ 8 中使用 Java 调试器并注意到一个标有“丢帧”的按钮。有人知道这有什么用途吗?如何/为什么会使用/有用?
【问题讨论】:
标签: java debugging intellij-idea
您的应用程序的调用堆栈可以在调试器中查看。使用“Drop Frame”功能,您可以“回退”到前一个堆栈帧,从某种意义上说,可以追溯到过去。如果您错过了想要再次查看的关键点,这对于重新输入函数很有帮助。
正如“堆栈框架”的名称所暗示的那样,已经对全局状态进行的更改(如静态变量、对字段值的更改等)将不会被撤消,只会重置局部变量。这可能导致与最初导致断点的执行路径不同。您需要注意这一点 - 我经常认为它是一个有用的功能,可以探索不同的执行路径,而无需重新启动应用程序或导致当前堆栈的特定冗长进程。结合调试器也可以改变变量值,你可以做各种有趣的事情。
请注意,当然,任何可能发生的副作用 - 例如。 G。网络流量、文件操作、控制台输出等 - 无法倒带。
【讨论】:
调试器弹出丢帧 当前堆栈帧和puts 控制回到呼叫 方法,重置任何局部变量。 这对于重复步进非常有用 通过一个函数,但要注意: 场突变或全局状态 更改将保留。
查看更多信息here。
【讨论】:
使用调试器从堆栈中删除帧本质上可以让您“倒回”应用程序的执行以达到之前的状态。堆栈框架之外的变量不会被还原。
顺便说一句,我相信这个特性在 Eclipse 中被称为“Drop to Frame”,但它的目的是一样的。
【讨论】: