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

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

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

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

我应该尝试其他任何策略吗?

4

1 回答 1

2

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

于 2009-03-06T05:13:29.797 回答