如何在Chrome调试器中检查JavaScript函数的返回值?

68

从gdb来看,在函数完成后它会打印返回值。在Chrome调试器中,有没有一种方法可以从中获取此信息而无需更改正在调试的源代码?


1
var a = abc(); console.log(a);变量a等于abc(); 打印输出a; - Srikanth Kshatriy
1
他说他想在不改变源代码的情况下完成它。 - Waynn Lue
你的意思是每当任何函数返回一个值时,你都想将其记录到控制台吗?如果存在递归或类似的操作,你的控制台将会被大量信息淹没并可能会挂起。 - Dagg Nabbit
10
正如Waynn所指出的那样,值得重申:我希望在不更改源代码的情况下查看函数的返回值。不,我不一定希望将它记录到控制台中。如果侧边栏中有像“最后返回的值”这样的东西就太好了。 - John Freeman
通过使用Visual Studio/gcc应用程序开发调试,我深刻体验到了这种好处,我相信这是非常有价值的。观察返回值是一种理智检查,额外的数据几乎总是在它经过时瞥一眼就会很有帮助。这就像更多的屏幕空间 - 你可能认为你不需要它,但一旦你拥有了它,你会想知道在没有它的时候你是如何度过的。 :-) - moodboom
7个回答

42
截至2013年11月5日,已经解决了这个问题,但显然只在Chrome Canary版本中发布(在我撰写本文时,我看到它在33.0.1719.0中,但在Chrome Beta版本32.0.1700.19 beta中没有看到)。
如果您正在使用具有此功能的版本,则在执行返回语句时,调试器的“作用域变量”本地作用域包括一个具有该值的“<return>”条目。
(我需要使用Canary进行主要的调试工作,但直到在问题中看到参考通知之前,我才没有注意到“<return>”条目的存在!)

5
有没有可用的变量名,这样我们就可以在控制台打印它?谢谢。 - Dzung Nguyen
5
是的,有一种方法。正如此答案对“是否可以在Chrome调试器中操纵返回值?”所解释的那样,您可以右键单击局部作用域中的“Return Value”,并选择“存储为全局变量”。 - Rory O'Kane

14

我正在使用Chrome 57.0.2987.98 beta (64位)版本,该功能已经存在,非常好用。以下是截图:

输入图片描述


6

我的Chrome版本是41.0.2272.118 m。以下是一个好的理由,为什么你应该将复杂的返回语句放在单独的一行上。如果你在return之后的任何一行添加断点,当触发断点时,在“Sources”面板的“Scope Variables”窗格下,“Local”节点下会添加(在此示例中)一个“<return>: true”叶子。

function bar() {
   return true;
}    
(function foo() {
   return bar();
})(); // Place breakpoint here

在我看来,这是问题的答案,并且在Chrome 52上(不是Canary)对我有效。 - Tongfa

3

目前还没有方法可以实现该功能。

不过有一个相关的增强请求,该请求已被分配,并且在撰写本文时正在等待这个V8增强功能


1
如果您设置了断点,可以将鼠标悬停在变量上,它会显示值--这对您尝试做的事情有用吗?

2
函数返回值并不总是存储在变量中。如果侧边栏有一个自动变量或监视值来显示“最后返回的值”,那将是非常好的。 - John Freeman
1
是的,没错。不幸的是,我不认为有办法查看函数返回的最后一个值。 - Waynn Lue

0

在Chrome中仍然不可能,但在Firefox 24+中是可能的。您需要从函数中“Step Out”(Shift + F11),它将显示函数范围内返回值或抛出的异常。


0

也许这个可以?

1.) 查看页面源代码。

2.) 查找函数定义并将其复制到剪贴板中。

3.) 修改剪贴板中的函数定义以记录它即将返回的值。(例如,console.log(x); return x;

4.) 将修补后的函数定义粘贴到控制台中并运行它。这将覆盖现有的函数。

5.) 触发该函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接