#actionscript-3 #debugging #actionscript #flexbuilder #stackunderflow
#actionscript-3 #отладка #actionscript #flexbuilder #stackunderflow
Вопрос:
У меня была эта странная проблема с ошибками переполнения стека, которые возникают только при сборке выпуска проекта Flex Builder. Я просмотрел Интернет, чтобы найти решение, но, хотя я нашел несколько связанных сообщений, мне ничего не помогло. Итак, вот этот вопрос и мое решение в ответах, чтобы он, надеюсь, помог другим людям.
Проблема: я портировал Java-программу (игру) на flex, и она отлично работает в режиме отладки на Android, в Интернете и Playbook. Однако, когда я создаю релизную версию игры, она вылетает. Согласно документации Adobe, сообщается об ошибке 1024, т. Е. Переполнение стека.
Сначала я думал, что проблема ограничивается только Playbook, но нет, точно такая же проблема возникает в одном и том же месте в веб-браузере и Android. Из вставленной мной отладочной информации я обнаружил, что исключение, похоже, генерируется во время вызова другой функции.
Ответ №1:
Чтобы решить проблему, я разбил нарушающую функцию на множество отдельных функций и таким образом сузил, какая именно часть кода вызывает проблему. Это привело меня к нескольким строкам кода, в которых был следующий вызов (в try-catch):
trace(e.getStackTrace())()
Хммм, это, по-видимому, было вызвано регулярным выражением, которое я использовал для рефакторинга с Java на Actionscript. Удаление extra () решает проблему.
Это то, что я хотел, чтобы компилятор перехватывал, вместо того, чтобы допускать сбой только при выпуске, когда функция, содержащая код-нарушитель, помещается в стек.
Комментарии:
1. Интересно, я думал, что возвращаемый тип из trace был void . Я бы предположил, что вы получите другую ошибку при попытке вызвать void(). Классный улов.