【发布时间】:2012-07-18 14:58:22
【问题描述】:
在复杂的 JavaScript 应用程序(使用 jQuery 和 Ember)中,JavaScript 偶尔会随机崩溃,无论是在页面加载期间还是在我对页面执行操作时。报错如下(screenshot):
Uncaught RangeError: Maximum call stack size exceeded
Class.proto
Class.proto
...
...有几页 Class.proto 堆栈跟踪行,但没有任何源/行信息,即使在跟踪的底部也是如此。
我知道这指向无限递归,这可能发生在事件系统中,但对我来说没有明显的起点。
我能够仅在 Chrome Canary (22.0.1209.0) 中重现此内容,而不是 Chrome 稳定版或 Firefox。该应用没有与任何外部服务通信或发出任何 Ajax 请求。
由于它只是偶尔发生,而且没有明显的原因,而且由于没有可用的堆栈跟踪,所以我很难找到原因。
我的问题:我可以做些什么来调试这个问题?
【问题讨论】:
-
您可能已经考虑过这一点,但由于这只发生在 Canary 版本中,这可能是 Canary 错误吗?您是否尝试过测试版或开发版 chrome 版本以查看问题是否在那里发生?
-
您可以在分析器中识别出有问题的函数。它必须是最长的一段。
-
很有可能是 Canary 错误。
-
启用“异常中断”(此图标developers.google.com/chrome-developer-tools/docs/…)
-
@SplitYourInfinity "Pause on exceptions" 对我不起作用(它不会暂停,它只是抛出错误并停止);我使用的是最新版本的 Chrome。