和:
Object method(){
...
return /* some complex expression */
}
有没有办法可以查看调试时返回的值?就像以某种方式设置一个断点,该断点会在返回后立即被命中,但在执行到调用代码之前?我希望能够知道返回值是什么,并且能够看到所有局部变量的值是什么。
我现在的做法是创建一个临时变量:Object ret = /* something complex */; return ret;
。但这很麻烦,而且还添加了额外的不必要的代码行。
注意:这与 Can I find out the return value before returning while debugging in Visual Studio 的问题相同,但针对的是 intellij。
在 IntelliJ IDEA 2016.3 上:它隐藏在调试面板的 cog 按钮内。确保 Show Method Return Values
已选中。
https://i.stack.imgur.com/5ei7C.png
使用调试器在您希望查看其返回值的函数内部的某处中断。
https://i.stack.imgur.com/8vLIg.png
退出函数(或跳过直到你逃脱):
https://i.stack.imgur.com/83Fvi.png
观察返回值出现在您的变量中:
https://i.stack.imgur.com/2qafi.png
debugger panel 中有观察方法返回值 按钮。
查看方法返回值:单击此按钮可查看最后执行的方法的返回值。
https://i.stack.imgur.com/wH2F5.png
IDEA 12 配置:
https://i.stack.imgur.com/6Nm3c.png
似乎有几种方法可以做到这一点。第一个涉及在方法签名上设置断点,在您的情况下,您将在 Object method(){ 上设置断点。这将允许您注意方法的入口和出口。我相信您必须将它与上述“观察方法返回值”结合使用,但我无法完全测试它,因为计算时间太长。请注意,这确实会大大降低调试器的性能,并且调试时间会更长。
您也可以手动执行以下操作。
在返回线上设置断点。当点击回车线时,点击回车线,具体将光标放在您想查看的操作上,然后转到运行->评估表达式(或Alt-F8),它应该在该点运行表达式并返回它返回的内容。
注意:如果你创建了一个断点,你可以告诉 IDEA 对它们做很多事情,比如如果你在断点处中断,你可以告诉他们执行一个表达式并记录它。如果您右键单击断点并单击属性,您可以环顾四周。
更新:尝试与第一种方法结合使用。不要使用“观察方法返回值”,因为它似乎会减慢或冻结调试会话。而是执行以下操作
右键单击要查看的返回表达式,然后单击“添加到手表”接下来添加一个方法断点,如上所述。调试您的程序,您的方法将在方法签名上中断。按 F9 键继续,它应该在计算返回表达式之后再次中断,并且您的返回表达式应该在监视列中。
请记住,方法断点较慢,因此可能需要更多时间,如果您注意到过多的性能损失,一个棘手的改进方法是设置 return 语句断点(没有方法断点),然后添加方法断点在 return 语句断点命中然后继续之后。
希望这可以帮助,
前一段时间有人问过这个问题,但是当我想处理这种情况时,我使用了不同的方法。
调试时,您可以标记表达式(在您的情况下,“return”之后的表达式)并点击 CTRL + ALT + F8 (快速评估表达式)。 IntelliJ 将弹出一个小窗口,显示将返回的值。