Intellij调试时返回前能查到返回值吗?

新手上路,请多包涵

和:

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

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

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

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

原文由 Kyle 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 773
2 个回答

似乎有几种方法可以做到这一点。第一个涉及在方法签名上设置断点,在您的情况下,您将在 Object method(){ 上设置断点。这将允许您观察方法的入口和出口。我相信你必须像上面所说的那样将它与“ 观察方法返回值” 结合使用,但我无法完全测试它,因为计算时间太长。请注意,这确实会显着降低调试器的性能,并且调试时间会更长。

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

  1. 在返回行上设置断点。
  2. 当返回行被击中时,点击返回行,特别是把光标放在你想看的操作上,然后去运行->评估表达式(或Alt-F8)它应该在那个点运行表达式并且返回它返回的内容。

注意:如果你创建一个断点,你可以告诉 IDEA 用它们做很多事情,比如如果你在断点处中断,你可以告诉他们执行一个表达式并记录它。如果您右键单击断点并单击属性,您可以环顾四周可以执行的操作。

_更新_:尝试将此与第一种方法结合使用。不要使用“观察方法返回值”,因为它似乎会减慢或冻结调试会话。而是执行以下操作

  1. 右键单击要查看的返回表达式,然后单击“添加到监视”
  2. 接下来添加一个方法断点,如上所述。
  3. 调试您的程序,您的方法将在方法签名上中断。
  4. 按 F9 键继续,它应该在计算返回表达式 再次中断,并且您的返回表达式应该在监视列中。

请记住,方法断点速度较慢,因此可能需要更多时间,如果您注意到太多的性能损失,一种改进此方法的棘手方法是仅设置返回语句断点(没有方法断点)然后添加方法断点在 return 语句断点命中 继续。

希望这可以帮助,

原文由 jluzwick 发布,翻译遵循 CC BY-SA 2.5 许可协议

在 IntelliJ IDEA 2016.3 上:它隐藏在调试面板的齿轮按钮内。确保 选中 Show Method Return Values

IntelliJ IDEA 2016.3《显示方法返回值》

使用调试器在您想要查看其返回值的函数 _内部某处中断_。

步入功能

跳出 函数(或 跳出 直到你逃脱):

走出去

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

观察返回值

原文由 Birchlabs 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题