Отладка переполнения стека флэш-памяти
-
03-07-2019 - |
Вопрос
У меня есть 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 кадра стека, а не всю трассировку стека.
Есть ли способ увидеть полную трассировку стека?В качестве альтернативы, есть ли способ ограничить глубину стека?
Я потратил целый день, пытаясь отладить это, но у меня очень мало информации и не хватает инструментов.Вот что я пробовал:
- Подключаю мой код к отладчику.Это флэш-память 9.0.28, работающая в Windows внутри виртуальной машины и подключающаяся к flex builder, работающему вне виртуальной машины.Кажется, соединение установлено, но операторы трассировки не появляются, а точки останова не срабатывают.
- Отправка строк журнала на http-сервер.Это работает, но я подозреваю, что мне не хватает последних n кадров стека перед переполнением/сбоем сервера.
- Подход слепого двоичного поиска с отключением частей кода - это медленно, но, вероятно, сработает.
Какие еще стратегии мне следует попробовать?
Решение
Делает этот похоже та же проблема?Извините, это не прямой ответ о том, как вы можете продолжить отладку, а скорее указатель на кого-то, у кого была аналогичная проблема и кто нашел решение.