在debuggingIntellij的过程中返回之前可以找出返回值吗?

附:

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

有没有一种方法,我可以看到debugging时将返回什么值? 像某种方式设置一个断点,将在返回后立即命中,但在执行前转到调用代码? 我想能够知道返回值是什么,也能够看到所有的局部variables的值是什么。

我现在做的方式是通过做一个临时variables: Object ret = /* something complex */; return ret; Object ret = /* something complex */; return ret; 。 但是,这是一个麻烦,也增加了一个额外的不必要的代码行。

注意:这与在Visual Studio中debugging返回值之前可以找出返回值是相同的问题,但是对于intellij。

似乎有几个方法可以做到这一点。 第一个涉及在方法签名上设置断点,在你的情况下,你会在Object method(){)上设置一个断点。 这将允许您观察方法的入口和出口。 我相信你必须和上面的“ Watch方法返回值”一起使用这个,但是我不能完全testing这个,因为计算需要很长的时间。 请注意,这确实会大大降低debugging器的性能,debugging将花费更长的时间。

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

  1. 在返回线上设置断点。
  2. 当返回行被命中时,点击返回行,特别是把光标放在你想要查看的操作上,然后进入Run-> Evaluate Expression(或者Alt-F8),它应该在那一刻运行expression式,返回它返回的内容。

注意 :如果你创build了一个断点,你可以告诉IDEA如何处理这些断点,比如如果你断点断点,你可以告诉它们执行一个expression式并logging下来。 如果右键单击断点并单击属性,则可以查看您可以执行的操作。

更新 :与第一种方法一起尝试此操作。 不要使用“Watch方法返回值”,因为它似乎会减慢或冻结debugging会话。 而是做以下事情

  1. 右键单击要查看的返回expression式,然后单击“添加到手表”
  2. 接下来添加一个像上面所述的方法断点。
  3. debugging你的程序,你的方法将打破方法签名。
  4. 按F9键继续,它应该会在计算完返回expression式之后再次中断,并且返回expression式应该在watch列中。

请记住,方法断点较慢,所以可能需要更多时间,如果您注意到性能问题过多,则可以通过设置返回语句断点(不带方法断点),然后添加方法断点在返回语句断点之后,然后继续。

希望这可以帮助,

在IntelliJ IDEA 2016.3上:它隐藏在debugging面板的cogbutton中。 确保Show Method Return Values选中

IntelliJ IDEA 2016.3“显示方法返回值”

使用debugging器打破你想看到的函数返回值的某个地方

步入功能

退出function(或跳过,直到你逃脱):

走出去

观察返回值出现在您的variables中:

观察返回值

在debugging器面板中有Watch方法返回值button。

观察方法返回值 :点击此button观察上次执行的方法的返回值。

观察方法的返回值

IDEA 12configuration:

IDEA 12