如何增加Google Chrome开发者工具(或Firefox)中的调用堆栈条目数?

时间:2012-03-29 18:41:21

标签: javascript google-chrome firebug google-chrome-devtools

如何增加Google Chrome开发者工具(或Firefox Firebug)中的调用堆栈条目数?我在第三方控件的Javascript中收到Javascript错误。 “调用堆栈”窗口中的所有调用都不属于我自己的代码。我想知道我的代码中的哪一行触发了事件序列。调用堆栈不够大,无法显示我自己的代码。

3 个答案:

答案 0 :(得分:27)

Chrome解决方案

https://github.com/v8/v8/wiki/Stack%20Trace%20API

可以在启动时通过命令行设置--js-flags="--stack-trace-limit <value>"

或在运行时加载页面:Error.stackTraceLimit=undefined //unlimited stack trace

答案 1 :(得分:15)

在Chrome中(也在节点中),您可以在js控制台中输入:

Error.stackTraceLimit = Infinity;

或者,请参阅此页面了解Chrome命令行标记:https://github.com/v8/v8/wiki/Stack%20Trace%20API(需要重新启动Chrome):

$ google-chrome --js-flags="--stack-trace-limit 10000"

答案 2 :(得分:-2)

我认为调用堆栈大小没有限制*)。通常看起来无处不在的堆栈跟踪来自

  • 一个事件监听器
  • 超时(window.setTimeout
  • 间隔(window.setInterval
  • 页面加载后的一些脚本加载(可能是iframe)

*)当然,从技术上来说肯定存在一些限制,但我猜它实际上是无关紧要的。可能是longint或者什么。


编辑:来自Firebug source code

    if (trace.frames.length > 100)  // TODO in the loop above
    {
        var originalLength = trace.frames.length;
        trace.frames.splice(50, originalLength - 100);
        var excuse = "(eliding "+(originalLength - 100)+" frames)";

        trace.frames[50] = new StackFrame.StackFrame({href: excuse}, 0, excuse,
            [], null, null, context);
     }

因此,Firebug将始终显示调用堆栈的前50个项目和最后50个项目(“帧”)。