在行运行之后和指令指针返回调用函数之前,是否可以看到方法的返回值?
我正在调试代码我无法修改(读取:不想重新编译第三方库),有时它会跳转到我没有源代码的代码或返回表达式具有副作用,使我无法在显示选项卡中运行表达式。
返回值通常用在复合语句中,因此 Variables 视图永远不会显示值(因此希望在控制返回调用函数之前查看结果)。
更新:我不能使用表达式查看器,因为语句中有副作用。
答案 0 :(得分:34)
此功能已添加到Eclipse bug 40912下的Eclipse版本4.7 M2中。
使用它:
return
语句(使用“Step Over”或“Step Return”)有关详细信息,请参阅Eclipse Project Oxygen (4.7) M2 - New and Noteworthy。
答案 1 :(得分:34)
找到了一个非常好的捷径。 选择返回值的表达式,然后按
Ctrl + Shift + D
这将显示return语句的值。如果您不能或不想仅仅为调试目的而进行更改,这非常有用。
希望这有帮助。
注意:没有使用第三方库对此进行测试,但它对我的代码工作正常。 在用于Web开发人员的 Eclipse Java EE IDE上进行了测试。版本:Juno Service Release 1
答案 2 :(得分:5)
这就是为什么我总是坚持使用以下方法:
MyReturnedType foo() {
MyReturnedType result = null;
// do your stuff, modify the result or not
return result;
}
我的规则:
当然,最琐碎的吸气剂是免税的。
答案 3 :(得分:5)
这实际上是Eclipse中一个长期存在的错误,可以追溯到IDE的最初几天:https://bugs.eclipse.org/bugs/show_bug.cgi?id=40912
答案 4 :(得分:2)
我很想知道这个问题的答案。
过去,在处理类似的第三方库时,我所做的是创建一个包装类或子类,该类委托给父类并在包装器/子类中进行调试。这需要额外的工作。
答案 5 :(得分:1)
“现在,当您从某个方法返回时,在上部方法中的变量视图中,它将显示先前完成的调用的返回值” [1]
答案 6 :(得分:0)
艰难的一个。我在Eclipse之外的经验是,如果您可能需要查看返回值,最好将其分配给函数中的局部变量,以便return语句是简单的return varname;
而不是{{1 }}。但是,由于您说您不能(或不想)修改甚至重新编译代码,因此对您没有任何帮助。所以,我没有给你一个好的答案 - 也许你需要重新考虑你的要求。
答案 7 :(得分:0)
根据return语句,您可以突出显示正在返回的表达式,并且从右键单击菜单中,应该有类似“evaluate expression”的内容(我现在面前没有eclipse,但它是类似的东西)。它会告诉你将要返回什么。
答案 8 :(得分:0)
这有点牵强,但似乎没有一个简单的方法:
您可以使用AspectJ来检测JAR的方面,这些方面可以获取您感兴趣的方法的返回值。根据Eclipse的文档,AspectJ程序可以像其他程序一样debugged。
在不重新编译库的情况下编写类有两种选择:
如果处理二进制JAR是可以接受的,则编译后编织;
加载时织入,需要在VM中激活织布剂。
请参阅eclipse文档(上面的链接)以及AspectJ Development Environment Guide。