如何在 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.stackTraceLim‌​it 不再起作用。 设置 Error.stackTraceLim‌​it 属性适用于 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 调试css怎么禁止缓存

Google Chrome 开发者工具 - 禁用黑色模拟选项标尺

在 Google Chrome 开发者工具的网络标签中捕获下载

Google 从 Chrome Store 下架开源反审查工具