如何在 Google Chrome 开发者工具(或 Firefox)中增加调用堆栈条目的数量?
Posted
技术标签:
【中文标题】如何在 Google Chrome 开发者工具(或 Firefox)中增加调用堆栈条目的数量?【英文标题】:How to increase number of Call Stack entries in Google Chrome Developer Tools (or Firefox)? 【发布时间】:2012-04-13 10:59:32 【问题描述】:如何在 Google Chrome 开发者工具(或 Firefox Firebug)中增加调用堆栈条目的数量?我在第三方控件的 javascript 中收到 Javascript 错误。 Call Stack 窗口中的所有调用都不属于我自己的代码。我想知道我的代码中的哪一行触发了事件序列。调用堆栈不够大,无法显示我自己的代码中的内容。
【问题讨论】:
如果你在最早的调用中放了一个断点,你能看到它之前发生了什么吗? 为了测试,您可以尝试增加 js 堆栈大小:code.google.com/p/v8/issues/detail?id=1631 【参考方案1】:我认为调用堆栈大小没有限制*)。通常,堆栈跟踪似乎无处不在
事件监听器 超时 (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 项(“帧”)。
【讨论】:
你错了。有一个最大堆栈大小,这非常重要。不适用于以异步方式编写的东西-但更多例如为口译员。在使用 Lisp 解释器时,我在 Chrome 中遇到了这个问题(最大堆栈大小比 Firefox 小得多)。大多数情况下,最好的办法是更改您的 JavaScript,使其异步运行(并通过setTimeout
对处理进行切片)。也就是说 - 对于第三方脚本,我真的不知道如何解决它。【参考方案2】:
铬解决方案
https://v8.dev/docs/stack-trace-api
可以在启动时通过命令行设置--js-flags="--stack-trace-limit <value>"
或在运行时加载页面:Error.stackTraceLimit=undefined //unlimited stack trace
【讨论】:
你能显示完整的命令吗?我试过open -a Google\ Chrome --args --js-flags="--stack-trace-limit 50"
,但堆栈跟踪仍然停在 10
如果您打开 chrome 开发控制台,您只需键入 '''Error.stackTraceLimit''',它就会显示当前值。然后,您可以根据需要对其进行修改。
如Error.stackTraceLimit=50
设置Error.stackTraceLimit
不再起作用。
设置 Error.stackTraceLimit
属性适用于 Chrome 60。在 Ubuntu 上运行。【参考方案3】:
在 Chrome 中(也在 node 中),您可以在 js 控制台中键入:
Error.stackTraceLimit = Infinity;
或者查看此页面以获取 Chrome 命令行标志:https://v8.dev/docs/stack-trace-api(需要重新启动 Chrome):
$ google-chrome --js-flags="--stack-trace-limit 10000"
【讨论】:
以上是关于如何在 Google Chrome 开发者工具(或 Firefox)中增加调用堆栈条目的数量?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Chrome 扩展程序自动保存 Google Chrome 开发者工具的网络面板日志?
如何在 Google Chrome 的开发工具中保存到我网站的源代码?
Google Chrome 开发者工具 - 禁用黑色模拟选项标尺