在Eclipse中debugging时返回值是否可以find返回值?

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

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

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

更新:我不能使用expression式查看器,因为在语句中有副作用。

在Eclipse错误40912下,该function被添加到了Eclipse版本4.7 M2。

find了一个非常好的捷径。 select返回值的expression式,然后按

Ctrl + Shift + D 

这将显示返回语句的值。 如果你不能或不想仅仅为了debugging目的而改变,这是非常有用的。

希望这可以帮助。

注意:没有testing过这个与第三方库,但它对我的代码工作正常。 在Eclipse Java EE IDE for Web Developers上进行了testing。 版本:Juno服务版本1

这就是为什么我总是坚持以下模式的方法:

 MyReturnedType foo() { MyReturnedType result = null; // do your stuff, modify the result or not return result; } 

我的规则:

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

当然,最微不足道的获得者是免除的。

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

我也很好奇学习这个问题的答案。

在过去,像这样处理第三方库时,我所做的是创build一个包装类或子类,委托给父类,并在包装​​器/子类中进行debugging。 这需要额外的工作。

根据return语句,你可以突出显示正在返回的expression式,从右键菜单中,应该有一个像“评估expression式”(我现在没有在我面前的日食,但它是这样的)。 它会告诉你什么是要返回。

坚强的 我在Eclipse之外的经验是,如果您需要查看返回值,最好将其分配给函数中的局部variables,以便return语句是一个简单的return varname; 而不是return(some * expression || other); 。 但是,由于您不能(或不想)修改甚至重新编译代码,因此这对您并不可怕。 所以我没有很好的答案 – 也许你需要重新考虑你的要求。

这有点牵强,但似乎没有一个简单的方法:

您可以使用AspectJ对JAR进行testing,获取您感兴趣的方法的返回值。根据Eclipse的文档,可以像其他程序一样debugging AspectJ程序。

有两种编织你的类而不重新编译库的select:

  • 如果处理二进制JAR,后编译编织是可以接受的;

  • 加载时织入,这需要在VM中激活织造代理。

请参阅eclipse文档(上面的链接)以及“ AspectJ开发环境指南” 。