Flash 调试闪存堆栈溢出
我有一个由第三方swf加载的swf。我有源代码并重新编译我的swf,但没有第三方swf的代码 可能在我的代码中,某个地方出现了堆栈溢出。在调试flash player中,当溢出发生时,我会看到一个带有堆栈跟踪的弹出对话框:Flash 调试闪存堆栈溢出,flash,actionscript-3,debugging,actionscript,flexbuilder,Flash,Actionscript 3,Debugging,Actionscript,Flexbuilder,我有一个由第三方swf加载的swf。我有源代码并重新编译我的swf,但没有第三方swf的代码 可能在我的代码中,某个地方出现了堆栈溢出。在调试flash player中,当溢出发生时,我会看到一个带有堆栈跟踪的弹出对话框: Error: Error #1023: Stack overflow occurred. at Object$/Object::_hasOwnProperty() at Object/http://adobe.com/AS3/2006/builtin::has
Error: Error #1023: Stack overflow occurred.
at Object$/Object::_hasOwnProperty()
at Object/http://adobe.com/AS3/2006/builtin::hasOwnProperty()
at Object$/Object::_hasOwnProperty()
at Object/http://adobe.com/AS3/2006/builtin::hasOwnProperty()
at Object$/Object::_hasOwnProperty()
64行代码都是这样的。但是,看起来我只看到了最后64个堆栈帧,而不是整个堆栈跟踪
有没有办法查看完整的堆栈跟踪?作为替代方案,是否有办法限制堆栈深度
我花了一整天的时间试图调试这个,但是我运行的信息很少,而且缺少工具。以下是我尝试过的:
- 将我的代码连接到调试器。这是运行在虚拟机内部windows中的flash 9.0.28,连接到虚拟机外部运行的flex builder。它看起来是连接的,但我没有得到跟踪语句,断点也不会触发
- 将日志行发送到http服务器。这是可行的,但我怀疑我错过了溢出/服务器崩溃之前的最后n个堆栈帧
- 一种盲的、二进制搜索类型的方法禁用部分代码-这很慢,但可能会起作用
我还应该尝试其他策略吗?听起来像是同样的问题吗?很抱歉,这不是关于如何进一步调试的直接答案,而是指向有类似问题并找到解决方案的人的指针。Flex Builder调试器的较新版本不再与Flash Player 9.0.28完全兼容。我相信您需要9.0.115或更高版本。您链接到的页面隐藏在注册墙中。其他地方也有同样的信息吗?因为现在,他们的注册服务器关闭了,和大多数开发人员一样,我宁愿现在就修复我的bug!