Google Chrome Developer Tools(或Firefox)中如何增加Call Stack条目的数量?
Google Chrome Developer Tools(或Firefox Firebug)中如何增加Call Stack条目的数量? 我在第三方控件的Javascript中得到一个Javascript错误。 “调用堆栈”窗口中的所有调用都不属于我自己的代码。 我想知道我的代码中的哪一行触发了事件序列。 调用堆栈不够大,无法显示自己的代码。
Chrome解决scheme
https://github.com/v8/v8/wiki/Stack%20Trace%20API
可以在启动时通过命令行设置--js-flags="--stack-trace-limit <value>"
或者在运行时加载一个页面: Error.stackTraceLimit=undefined //unlimited stack trace
在Chrome中(也在节点中),您可以在js控制台中键入以下内容:
Error.stackTraceLimit = Infinity;
或者,请查看此页面以查看Chrome命令行标志: https : //github.com/v8/v8/wiki/Stack%20Trace%20API (需要重新启动Chrome):
$ google-chrome --js-flags="--stack-trace-limit 10000"
我不认为有调用堆栈大小的限制*)。 通常情况下,堆栈跟踪似乎是无处不在的
- 一个事件监听器
- 超时(
window.setTimeout
) - 一个区间(
window.setInterval
) - 页面加载后的一些脚本加载(可能是iframe)
*)当然,技术上肯定有一定的限制,但是我觉得它实际上是不相关的。 可能longint什么的。
编辑:从Firebug源代码 :
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个项目(“帧”)。