Extjs 未捕获范围错误:超出最大调用堆栈大小

Jac*_*cob -1 javascript stack extjs

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

Fur*_*der 5

为了找到无限循环,我执行以下操作:

  1. 打开页面
  2. 打开开发工具
  3. 为我认为导致问题的函数设置断点
  4. 重新加载页面(这样,您可以在第一次调用函数时中断,通常很有帮助)
  5. 执行操作
  6. 正常调试(步骤、继续等...)

要查看函数调用堆栈,请单击 chrome 开发工具顶部的“源”选项卡。当您的程序遇到断点或单击暂停按钮(如下所示:| |)时,您可以单击右侧面板上的三角形“调用堆栈”项。这将显示当前堆栈中的函数。

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

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