Extjs Uncaught RangeError:超出最大调用堆栈大小

时间:2014-01-09 11:43:35

标签: javascript extjs stack

我知道可能在我的代码中的某个地方我再次如此精彩,以至于我设法写了一个递归的代码块。但我能够找到它的位置。 Chrome错误控制台仅向我提供错误发生在app.js行:1234的信息。如何跟踪(调试)我的代码的哪一部分导致错误?有没有机会在浏览器中查看堆栈?

3 个答案:

答案 0 :(得分:4)

要找到无限循环,我会执行以下操作:

  1. 打开页面
  2. 打开开发工具
  3. 为我认为导致问题的功能设置断点
  4. 重新加载页面(这样,你可以在第一次调用函数时中断,通常很有帮助)
  5. 执行操作
  6. 正常调试(步骤,继续等..)
  7. 要查看函数调用堆栈,请单击chrome的开发工具顶部的“源”选项卡。当您的程序达到断点时,或者单击暂停按钮(如下所示:| |),您可以单击右侧面板上的三角形“调用堆栈”项。这将显示当前堆栈中的功能。

    要查看包含可变数据的实际堆栈,您需要记录配置文件或时间线。要记录配置文件,请单击“配置文件”选项卡,然后单击“获取堆快照”。我喜欢等到我的程序达到我认为是问题的区域的断点,然后拍摄快照。有关快照的详细信息,请参阅this page

    记录时间表可能会有所帮助。时间轴允许您记录一段时间内发生的所有事件,帧和内存分配。要选择一个,请单击“时间轴”选项卡。然后,单击放大镜图标旁边底部的黑色圆形图标。图标将变为红色,表示正在录制。此时,您应该执行您认为导致故障的操作,然后立即再次单击该按钮以停止录制。将时间线与标准调试技术相结合,可以让您执行一个相当精彩的技巧。您可以设置断点,开始记录时间轴,然后手动单步执行代码。这允许您暂停代码的执行,停止记录时间线,并查看正在进行的操作。

答案 1 :(得分:1)

在ExtJs中,当一个类文件以Ext.create(而不是Ext.define)开头时,在特定情况下会发生无限循环( 也许这就是这种情况?

答案 2 :(得分:0)

我的问题是有一个Ext.create而不是Ext.define,就像另一个用户指出的那样。