如何在调试器的‘Evaluate expression’中访问函数返回值(无需修改代码)
如何在调试器中访问return语句的方法返回值(无需修改代码)
完全可以不用修改代码,主流调试器都支持直接获取return语句里已经执行完成的方法返回值,不会重复调用changeState()。不同工具的操作方式如下:
IntelliJ IDEA/Android Studio:
在return changeState(...lots of parameters...)这行打断点,程序暂停后,切换到调试面板的「Frames」区域,展开当前方法的栈帧,就能看到一个自动生成的临时变量(通常名为$return),直接在调试器的表达式输入框里引用这个变量,就能拿到changeState()的执行结果,不会触发二次调用。Eclipse:
同样在return语句行设置断点,暂停后,在「Expressions」视图中可以直接引用内置的return value变量,或者右键点击当前栈帧选择「Inspect」,就能查看已经计算好的返回值,这个值是方法执行后的结果,不会重复调用目标方法。VS Code(支持Java/JavaScript等主流语言):
在return行打断点,程序暂停后,打开「Debug Console」:- Java环境下输入
_return即可获取返回值; - 其他语言可以查看「Variables」面板里的「Return Value」项,直接取用已计算的结果。
- Java环境下输入
如果遇到一些老旧或轻量调试器不支持该特性,才需要临时修改代码将结果赋值给局部变量,但绝大多数现代调试工具都提供了直接访问return返回值的能力。
内容的提问来源于stack exchange,提问作者Aaron Digulla
相关产品推荐
相关产品推荐

