Я работаю над проектом AS3/Flex с большими размерами (некоторые части являются чистыми AS3, другие части Flex), и я испытываю много сбоев Flash Debugger.Псевдослучайные сбои во Flash Debugger - Мой плохой или Обитель?
Эти сбои не являются полностью случайными - кажется, я могу заставить их возникать с большей согласованностью, когда выполняю определенные действия в своем приложении. Тем не менее, в то же время они не всегда повторяемы - иногда набор действий заставляет мое приложение терпеть крах, а в других случаях одни и те же шаги выполняются отлично без сбоя.
я два вопроса (тщательно сформулированы, чтобы удалить свою личную предвзятость :))
эти сбои из-за моей практики программирования или проигрывателя Adobe Flash Debugger?
1a. Если эти сбои связаны с моим кодированием, как мне решить проблемы с фиксацией, которые не повторяются последовательно? : P
Когда я развертываю свое приложение на веб-сайте и получаю доступ к нему через Flash Player, должен ли я ожидать, что произойдут те же самые сбои, или Flash Player значительно более устойчив, чем Flash Debugger?
Большое спасибо, все! :)
-Rich
UPDATE:
Спасибо за ответы, все! Некоторая более справочная информация:
Я использую довольно исправный DeMonster Debugger (http://demonsterdebugger.com/), а также доморощенный класс Profiler для мониторинга напряжения процессора/памяти моего приложения. Я уверенно уверен, что сбои не связаны с нагрузкой на память/процессор, потому что я могу (несколько последовательно) заставить приложение терпеть крах с очень небольшим напряжением в течение 30 секунд после выполнения.
Из-за архитектуры моего приложения утечки памяти становятся очевидными довольно легко. Поэтому я смог/вынужден был устранить, по крайней мере, большую часть утечек памяти. Хотя я признаю, что, вероятно, все еще существуют утечки памяти, использование памяти является тривиально низким в точке, где я могу заставить приложение сбой, поэтому это вряд ли будет связано.
Теперь некоторые подробности о фактическом коде нарушившего:
отменить механизм для приложения (XMLManager.as) работает путем сохранения изменений в модель (представленной в XML). Чтобы отменить изменение, приложение перезагружает (повторно создает) ключевые компоненты на основе XML, хранящегося в XMLManager.as. Чтобы получить приложение (несколько последовательно), я могу выполнить набор действий, которые все связаны с определенным классом в приложении, классом Line.as. Выполнение действий не вызывает проблем, но Undo() приводит к сбою приложения.
Наиболее запутанной частью этого является то, что XML, хранящийся в классе XMLManager, фактически идентичен сценарию сбоя и сценарию без сбоев.Другой запутанный аспект заключается в том, что сценарий сбоя вводится только одной строкой:
xml + = 'text = "' + text + '"'; // не приводит к сбою
xml + = 'text = "' + tf.text + '"'; // приводит к сбою
«текст» - это строка, которая должна отражать содержимое tf.text (tf является текстовым полем). Эта строка находится в методе Line.toXml(), который используется для преобразования строки в соответствующий XML для хранения в XMLManager. Итак, запутанная вещь обо всем этом состоит в том, что использование tf.text в конечном итоге приводит к сбою в механизме отмены, хотя XML, хранящийся в механизме XML, существенно не изменился ...
Чтобы сделать вещи еще более запутанный, я могу вывести полный XML перед началом процесса отмены. Таким образом, когда происходит сбой Flash, у меня есть запись XML, которая вызвала его сбой. Если я возьму тот же самый XML (который при ручном осмотре выглядит нормальным) и вернет его в приложение в качестве его начального состояния, ошибок не произойдет, и Flash не сработает.
Так много путаницы! :)
Извините за подробное объяснение; возможно, вы можете понять, почему я здесь в недоумении!
(Обратите внимание, что я нашел обходное решение - вместо того, чтобы использовать «tf.text» непосредственно в коде toXml(), я могу сохранить «текст» в актуальном состоянии с содержимым «tf.text» во всех случаях. Этот подход, который теоретически приводит к тому же используемому XML, отлично работает без сбоев ...)
Любые мысли?
http://www.codinghorror.com/blog/2008/03/the-first-rule-of-programming-its-always-your-fault.html – Nate
Ха-ха! Спасибо, Нейт. Наверное, совет! – rinogo
И нет ошибки, которую вызывают, она просто падает? – quoo