Extjs Uncaught RangeError:超出最大调用堆栈大小[关闭]

问题描述 投票:-1回答:3

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

javascript extjs stack
3个回答
5
投票

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

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

要查看函数调用堆栈,请单击chrome开发工具顶部的“源”标签。当程序到达断点或单击暂停按钮(看起来像:| |)时,可以单击右侧面板上的三角形“调用堆栈”项。这将向您显示堆栈上当前有哪些功能。

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

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


2
投票

在ExtJs中,在特定情况下,当类文件以Ext.create(而不是Ext.define(开头时,将发生无限循环。

也许是这种情况?


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.