对未捕获的范围错误进行故障排除:超出最大调用堆栈大小

Ser*_*hiy 5 javascript debugging javascript-debugger google-chrome-devtools

我仅在 Mac 计算机上的 Safari 和 Chrome 中收到此错误,但无法在其他浏览器或 Windows 上重现。主要问题 - 没有关于哪个功能导致问题的信息。异常发生前没有最近调用的堆栈跟踪。甚至“异常暂停”设置也不起作用。它不会在此异常上暂停,仅将信息放入控制台。

如何排除导致问题的原因、在哪个函数上崩溃、崩溃前的调用堆栈是什么?或者如何记录所有函数调用(重要提示,分析器应在页面加载后立即启动)。

Ser*_*hiy 2

我已经设法找到导致错误的点,因此对于那些面临同样问题的人来说,这里有一些建议:

  • console.log是你的朋友。我在 Google Chrome 中没有找到可以跟踪页面加载后立即开始的所有方法调用的选项。即使有这样的设置,您看到的呼叫量也可能非常大。因此,只要您的函数之一被调用,您就可以使用 console.log 来记录。
  • 注释掉部分代码。就我而言,js 文件非常大,至少找到导致错误的代码部分很有帮助。因此,我首先安全地逐段注释掉代码。
  • 使用上面的技术我发现问题出现在混淆代码中,所以我接下来尝试的是一一禁用混淆选项。通过这种方法,我发现启用“字符串分割”混淆选项时出现问题。我还在 code.google.com chromium 44604756588上发现了这些问题。