Трассировка swf в онлайне. О пользе trace в нелегкой жизни разработчика
Подходит к завершению работа над очередным flash проектом. Проект не сверх сложный но и не элементарный. Построено все на шаблоне MVC. Как водится в таких проектах с некоторого момента цепочка вызовов функций становится, мягко говоря, длинной, а соответственно, труднее становится отловить всяческие глюки, типа многократного вызова одной и той же функции.
Учитывая асинхронную природу всего этого хозяйства, ловить ошибки становится еще на порядок сложнее, т.к. вызовы функций происходят в разное время.
Так вот, чтобы находить всякие явные и неявные ошибки, я взял за правило, всюду ставить операторы trace() выводящие нужную информацию в output во flash IDE.
Что это дает? Во-первых можно отследить порядок исполнения функций, кто за кем создается, как объекты взаимодействуют, Во-вторых можно следить за значениями всяких нужных переменных в динамике.
Казалось бы зачем весь этот сыр-бор с трейсом когда есть дебаггер? Дело в том, что дебаг понятное дело не заменишь, но из-за специфики архитектуры приложения дебаггер не всегда ясно дает понять происходящее, задержки между вызовами функций не те, что в реальности, а главное trace дает возможность увидеть наглядно историю вызовов функций и спокойно ее проанализировать.
В определенный момент мне захотелось сделать трассировку прямо на живом удаленном приложении, а не внутри IDE. Поиски привели меня к блогу senocular.com(там еще масса всяких полезных штук), где я нашел замечательный готовый класс, для трассировки сообщений в текстовое поле внутри флешового ролика.
На картинке показан экран трассировки внутри ролики с трейсом моего проекта. Я слегка модифицировал класс добавив скрытие окна по кнопке “Home” и открытие по “End”.
Класс используется как static. Нужно добавить его в addChild( new Output() ); и вместо trace() надо писать Output.trace(). Скачать класс можно здесь: output.rar.
Subscribe to the RSS feed and have all new posts delivered straight to you.
