通过记录函数调用和参数进行实时JavaScript调试

17

是否有一种调试系统可以在javascript函数调用时记录它们的参数?这将允许我在实时/客户端情况下跟踪和调试应用程序,避免手动记录对性能的影响。

编辑:我不是在谈论使用“控制台”窗口手动调用函数并查看结果,也不是手动添加“跟踪”或“日志”命令到我的javascript。我需要它能够与任何正在运行的javascript一起使用。

10个回答

18
你可以重写Function.prototype.call并检索arguments和arguments.callee吗?
这将导致对所有函数进行报告,因此非常详细,但也许你想要过滤。
然后有一个问题,你如何报告,也许通过if (console) console.log。

1
这是一个很棒的想法。 - mwilcox
好主意,但没有提供GUI界面!如果我有一些确认Dynatrace捕获了函数调用,我会在那里授予赏金,但在此之前,你的想法是最好的。 - Robin Rodricks
有人能提供一个例子吗?如果你在IE或FF中查看这个实现(http://jsfiddle.net/b7Sny/),当我期望会有两个警报时,只有一个警报。换句话说,如果我使用`myfunction.call()`,这个答案似乎是有效的,但如果我执行`myfunction()`,它就不起作用了。 - user979672
尝试在jsfiddle之外进行测试,例如在firebug控制台中。 - Joe Hanink

3

看起来很棒!没想到这样的东西已经存在了这么久! - Jon

2

@Jenko 如果你正在寻找类似于IDE调试器的东西,那么Internet Explorer 8和9都有内置的开发者工具(按F12键),Chrome也有开发者工具。IE和Chrome都允许您在代码中设置断点并在运行时逐步执行。Firefox有Firebug,正如其他人所提到的,它也允许设置断点并检查代码的执行。Opera有Dragonfly(内置)并具有其他浏览器相同的功能。


2
当我阅读答案并笑看着"你可以使用Firebug!"的重复答案时,我意识到...你可以使用Firebug。它有一个“profile”命令,正是您所要求的内容。Safari和Chrome也具有此功能,因此您也可以在那里检查。IE8/9有一个类似的“profiler”工具(但我不知道是否可以从JavaScript使用console.profile()调用)。这将为您提供准确的时间,因为您添加的任何代码和日志都会影响实际性能。而且由于这个功能在主要浏览器中都有,您可以获得合理数量的数据。

2

它在2016年无法工作!Firebug似乎已经合并到了Firefox DevTool中。我发现了这个hack:https://javascriptweblog.wordpress.com/2010/06/01/a-tracer-utility-in-2kb/,我打算尝试一下。 - P.M

0

0

是的,所有主要的浏览器都内置了调试器(IE、Chrome、Safari),或者作为附加组件提供(Firefox 的 Firebug)。


0

Firebug很适合这个。或者你也可以使用Google Chrome内置的调试器。


0

对于Firefox Firebug 对于IE开发者工具 对于Chrome内置调试器很好用


0

可以说,最好的在线JavaScript代码质量控制工具是JSLint。它不仅检查代码中的错误,还可以完全改善程序的编码风格<<这也是作者最初开发它的原因。我的0.02美元。

http://www.jslint.com/


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