我可以在Intellij中调试时返回返回值吗?

时间:2011-02-15 22:39:21

标签: java groovy intellij-idea

使用:

Object method(){
    ...
    return /* some complex expression */
}

有没有办法可以看到调试时会返回什么值?就像以某种方式设置一个断点,在返回后立即命中,但在执行之前转到调用代码?我希望能够知道返回值是什么,并且还能够看到所有局部变量的值。

我现在的方法是制作一个临时变量:Object ret = /* something complex */; return ret;。但这很麻烦,并且还增加了额外的不必要的代码行。

注意:这与Can I find out the return value before returning while debugging in Visual Studio的问题相同,但对于intellij。

4 个答案:

答案 0 :(得分:115)

在IntelliJ IDEA 2016.3上:它隐藏在调试面板的cog按钮内。确保<{1}}已检查

IntelliJ IDEA 2016.3 "Show Method Return Values"

使用调试器内部的某个地方中断你希望看到的返回值的函数。

step into function

退出该功能(或跨过直至逃跑):

step out

观察返回值出现在变量中:

observe the return value

答案 1 :(得分:34)

debugger panel中有观看方法返回值按钮。

  

监视方法返回值:单击此按钮可以观察上次执行方法的返回值。

watch method return values

IDEA 12配置:

IDEA 12

答案 2 :(得分:27)

似乎有几种方法可以做到这一点。第一个涉及在方法签名上设置断点,在您的情况下,您将在Object方法(){上设置断点。这将允许您观察方法的入口和出口。我相信您必须将此与“观察方法返回值”一起使用,如上所述,但由于计算时间太长,我无法完全测试。请注意,这会极大地降低调试器的性能,并且调试时间会更长。

您也可以手动执行以下操作。

  1. 在返回行上设置断点。
  2. 点击返回行时,单击返回行,特别是将光标放在要查看的操作上,然后转到Run-&gt; Evaluate Expression(或Alt-F8)并运行表达式在那一点上,并返回它返回的内容。
  3. 注意:如果你创建一个断点,你可以告诉IDEA很多事情,比如你在断点上断点,你可以告诉他们执行一个表达式并记录下来。如果右键单击断点并单击属性,则可以查看可以执行的操作。

    更新 的: 结合第一种方法尝试这一点。不要使用“监视方法返回值”,因为它似乎会减慢或冻结调试会话。而是执行以下操作

    1. 右键单击要查看的返回表达式,然后单击“添加到手表”
    2. 接下来添加如上所述的方法断点。
    3. 调试您的程序,您的方法将破坏方法签名。
    4. 按F9键继续,它应该再次中断 AFTER 已经计算了返回表达式,并且您的返回表达式应该在监视列中。
    5. 请记住,方法断点较慢,因此可能需要更多时间,如果您注意到太多的性能损失,只需设置return语句断点(没有方法断点)然后添加,这是一种难以改进的方法方法断点 AFTER 返回语句断点命中然后继续。

      希望这有帮助,

答案 3 :(得分:1)

这个问题是前一段时间提出的,但是当我想处理这种情况时,我会使用另一种方法。

在调试时,您可以标记表达式(在您的情况下,是在“返回”之后的表达式),然后按CTRL + ALT + F8(快速评估表达式)。 IntelliJ将弹出一个小窗口,向您显示将返回的值。