【问题标题】:How to find what caused stack overflow in a large javascript file?如何在大型 javascript 文件中查找导致堆栈溢出的原因?
【发布时间】:2023-04-03 10:35:02
【问题描述】:

我的页面上有一个巨大的 JS 文件(超过 25k 行代码),它做了很多事情。我只添加了一行来设置一个 cookie,然后我开始在 Chrome 中收到错误“超出最大调用堆栈大小”(在 FF 中“递归过多”)。但是在这些工具中的任何一个中,当我在错误控制台中单击错误所在的代码行时,它似乎都不是真正的原因。

有没有办法确定堆栈溢出从哪里开始?哪里出了问题?

【问题讨论】:

  • 是的,审查和调试代码......没有看到代码很难:)
  • 是的,这是一条漫长而艰难的道路,但如果其中一个 JS 工具(如 firebug 或 chrome devtools)能告诉我哪个函数超出了调用限制(以及谁也许是谁调用了那个函数)。
  • IE11 中的 Devtools 似乎显示了一条折断骆驼脖子的线......实际上 FF 和 Chrome 也是如此。

标签: javascript google-chrome-devtools firebug


【解决方案1】:

您的递归函数似乎超出了调用限制(JS 引擎将递归调用限制在 10.000 左右),因此您的函数不会结束,而是无限调用。

问题应该出在你正在调用的函数上,你可以在谷歌浏览器源中看到函数调用堆栈(在你认为可能发生的地方设置一些断点,或者你更改了代码的地方)。

在右侧,您会注意到调用堆栈下拉菜单,您应该清楚是哪个函数导致了问题。

*图片供参考。

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 2012-09-18
    • 1970-01-01
    • 2015-05-21
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    相关资源
    最近更新 更多