Отладка переполнения флэш-стека - PullRequest
2 голосов
/ 06 марта 2009

У меня есть SWF, который загружается сторонним SWF. У меня есть исходный код и перекомпилирован мой SWF, но нет кода для стороннего SWF.

Где-то, вероятно, в моем коде переполнение стека. В отладочном флэш-плеере я получаю хороший всплывающий диалог с трассировкой стека при переполнении:

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 кадра стека, а не весь след стека.

Есть ли способ увидеть полную трассировку стека? Как альтернатива, есть ли способ ограничить глубину стека?

Я провел целый день, пытаясь отладить это, но использую очень мало информации и нехватку инструментов. Вот что я попробовал:

  • Подключение моего кода к отладчику. Это во Flash 9.0.28, работающем в Windows внутри виртуальной машины, которое подключается к Flex Builder, работающему за пределами VM. Кажется, он соединяется, но я не получаю трассировочные операторы, а точки останова не срабатывают.
  • Отправка строк журнала на http-сервер. Это работает, но я подозреваю, что мне не хватает последних n кадров стека перед переполнением / сбоем сервера.
  • Подход слепого типа поиска, запрещающий фрагменты кода - это медленно, но, вероятно, будет работать.

Какие еще стратегии я должен попробовать?

1 Ответ

2 голосов
/ 06 марта 2009

это звучит как та же проблема? Извините, поскольку это не прямой ответ о том, как вы могли бы далее отладить это, а скорее указатель на кого-то, кто имел подобную проблему и нашел решение.

...