2009-03-06 43 views
2

我有一个由第三方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个堆栈帧,而不是整个堆栈跟踪。

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

我花了整整一天的时间来尝试调试,但是运行的信息很少,缺少工具。以下是我尝试过的:

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

我应该尝试的其他策略?

+0

更新版本的Flex Builder调试器不再与Flash Player 9.0.28完全兼容。我相信你需要9.0.115或更高。 – joshtynjala 2009-03-06 22:37:37

回答

2

this听起来像是同样的问题吗?对不起,因为它不是直接回答你如何进一步调试,而是更多的指向有类似问题并找到解决方案的人。

+0

这确实最终成为我们的问题,谢谢!多么糟糕的错误... – 2009-03-28 18:16:32