调试闪存堆栈溢出

时间:2009-03-06 04:53:50

标签: flash actionscript-3 debugging actionscript flexbuilder

我有一个由第三方SWF加载的swf。我有源代码并重新编译我的swf,但没有第三方swf的代码。

某处,可能在我的代码中,存在堆栈溢出。在调试Flash播放器中,当溢出发生时,我得到一个带有堆栈跟踪的漂亮弹出对话框:

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个堆栈帧,而不是整个堆栈跟踪。

有没有办法看到完整的堆栈跟踪?作为替代方案,有没有办法限制堆栈深度?

我花了整整一天时间尝试调试这个,但是运行的信息很少,而且缺少工具。这是我尝试过的:

  • 将我的代码挂钩到调试器。这是在VM内部的窗口中运行的flash 9.0.28中,连接到在VM外部运行的Flex构建器。它似乎是连接,但我没有得到跟踪语句,并且断点不会触发。
  • 将日志行发送到http服务器。这有效,但我怀疑在溢出/服务器崩溃之前我错过了最后n个堆栈帧。
  • 一种盲目的二进制搜索类型方法,禁用部分代码 - 这很慢,但可能会有效。

我应该尝试的其他策略?

1 个答案:

答案 0 :(得分:2)

this听起来像是同一个问题吗?抱歉,这不是关于如何进一步调试此问题的答案,而是更多指向遇到类似问题并找到解决方案的人的指针。