【问题标题】:When using the Java debugger in IntelliJ, what does "Drop Frame" mean?在 IntelliJ 中使用 Java 调试器时,“丢帧”是什么意思?
【发布时间】:2010-03-02 23:49:03
【问题描述】:

我在 IntelliJ 8 中使用 Java 调试器并注意到一个标有“丢帧”的按钮。有人知道这有什么用途吗?如何/为什么会使用/有用?

【问题讨论】:

    标签: java debugging intellij-idea


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      调试器弹出丢帧 当前堆栈帧和puts 控制回到呼叫 方法,重置任何局部变量。 这对于重复步进非常有用 通过一个函数,但要注意: 场突变或全局状态 更改将保留。

      查看更多信息here

      【讨论】:

      • 答案中的链接已失效 - “无法访问此站点 | DNS_PROBE_FINISHED_NXDOMAIN”
      • 链接已更新@Pang
      【解决方案3】:

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

      顺便说一句,我相信这个特性在 Eclipse 中被称为“Drop to Frame”,但它的目的是一样的。

      【讨论】:

        猜你喜欢
        • 2013-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-20
        • 1970-01-01
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        相关资源
        最近更新 更多