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

Rod*_*own 98 java eclipse debugging return-value

在行运行之后和指令指针返回调用函数之前,是否可以看到方法的返回值?

我正在调试我无法修改的代码(读取:不想重新编译第三方库),有时它跳转到我没有源代码的代码或者返回表达式有副作用阻止我能够在显示选项卡中运行表达式.

通常返回值在复合语句中使用,因此Variables视图永远不会向我显示该值(因此希望在控制返回到调用函数之前查看结果).

更新:我不能使用表达式查看器,因为语句中有副作用.

小智 35

此功能已添加到Eclipse版本4.7 M2下的Eclipse版本4.7 M2中.

要使用它:

  • 跳过return声明(使用"Step Over"或"Step Return")
  • 现在变量视图中的第一行将显示return语句的结果,如"[statement xxx]返回:"

有关详细信息,请参阅Eclipse Project Oxygen(4.7)M2 - 新增和值得注意的事项.


小智 34

找到了一个非常好的捷径.选择返回值的表达式,然后按

Ctrl + Shift + D
Run Code Online (Sandbox Code Playgroud)

这将显示return语句的值.如果您不能或不想仅仅为了调试目的而进行更改,这非常有用.

希望这可以帮助.

注意:尚未使用第三方库对此进行测试,但它对我的代码工作正常.在用于Web开发人员的Eclipse Java EE IDE上进行了测试.版本:Juno Service Release 1

  • +1因为这不仅适用于返回值,而且适用于一般的表达式.比使用表达式选项卡更方便.应该注意这会执行代码,所以如果它有副作用,请注意.http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fmenus%2Frun%2Fref-menu-run.htm (4认同)
  • 正如@goat所提到的,这会多次执行代码,所以例如如果函数执行了这个`return System.currentTimeMillis();`,那么你得到的结果与实际返回的函数不同! (2认同)

zvi*_*ico 5

这就是为什么我总是坚持使用以下方法:

MyReturnedType foo() {
     MyReturnedType   result = null;

     // do your stuff, modify the result or not

     return result;
}
Run Code Online (Sandbox Code Playgroud)

我的规则:

  1. 只有一个return语句,只在方法结束时(最后允许)
  2. 始终有一个本地调用的结果,它保存返回值,从默认值开始.

当然,最琐碎的吸气剂是免税的.

  • 嘿zvikico - 当我在处理我自己的代码时,我通常使用类似的模式.不幸的是,我的问题是当我使用的代码不是由我编写或修改的.:S (3认同)

Arj*_*jms 5

这实际上是Eclipse中一个长期存在的错误,可以追溯到IDE的最初几天:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 40912