谷歌浏览器:如何随机调试“超出最大调用堆栈大小”错误

时间:2012-07-18 14:58:23

标签: javascript google-chrome

在复杂的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请求。

由于它只是偶尔发生,并且没有明显的原因,而且由于没有可用的堆栈跟踪,我无法追查原因。

我的问题:如何调试此问题?

1 个答案:

答案 0 :(得分:19)

在Chrome开发者工具栏中启用“中断例外”。在来源标签上的工具栏页脚中使用此This is the icon图标(有3种状态!)

它应该停止你的代码,你可以看到堆栈!