【问题标题】:Edit method return value in a debugger在调试器中编辑方法返回值
【发布时间】:2015-03-22 00:00:25
【问题描述】:

鉴于以下 Java 代码,我如何使用 IntelliJ 或 Eclipse 调试器从 condition() 方法返回 false

public boolean condition() {
    return (4 == add());
}

public int add() {
    return 2 + 2;
}

【问题讨论】:

    标签: java debugging


    【解决方案1】:

    在 Eclipse 中,您可以使用 Force Return

    只需在return (4 == add()); 上放置一个断点,然后在显示视图选项卡上键入false。然后选择您的false,右键单击并点击“强制返回”。

    【讨论】:

    • 谢谢,它对我有用,我有一个返回空对象的方法,当通过在显示视图中实例化一个新实例来强制返回时,它可以工作。
    • 有什么方法可以自动执行此操作,我讨厌在调试期间跟踪我必须设置的 6 - 19 个不同的变量
    • 谁能解释什么是“显示视图标签”?
    【解决方案2】:

    在 IntelliJ(自 IDEA 15 EAP 起)中,您可以使用 Force return

    jetbrains 博客摘录

    您可以强制从当前方法返回,而无需执行任何其他指令:

    注意:

    如果方法返回一个值,您必须指定它(提供智能代码完成)。

    如果方法有 try-finally 块,您将能够选择是否执行它们。

    【讨论】:

      【解决方案3】:

      您可以先将condition 的代码更改为以下内容:

      public boolean condition() {
         boolean result = (4 == add());
         return result;
      }
      

      然后,您可以在return 语句上设置断点。当断点被命中时,您可以使用调试器将result的值更改为false

      【讨论】:

      • 我同意这行得通,但这是对另一个问题的回答。
      • 我特意询问如何在运行时更改调用堆栈上的返回值。您建议我在编译时创建一个新变量,然后在运行时编辑该调用堆栈变量。
      • 你只能使用IDE调试器只能改变一个变量的值。更改代码(如我的回答)是做你想做的事情的唯一方法。
      • @cybersam:错了,看另一个答案:-)。
      猜你喜欢
      • 2021-06-02
      • 1970-01-01
      • 2013-03-03
      • 2010-10-02
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      相关资源
      最近更新 更多