Точки останова Flash Builder Mac генерируют исключения NullPointerException - PullRequest
0 голосов
/ 25 августа 2011

У меня есть сложный, уже существующий проект Actionscript для работы с моим нынешним работодателем. Первоначально проект был создан с помощью FlashDevelop, что не подходит для меня как пользователя Mac. Я могу успешно построить проект и развернуть его для других. Работает как положено.

Проблема в отладке. Я не могу заставить это работать. Я считаю, что пользователи Flash Builder на машинах Windows успешно отладили этот проект на своей машине. Я могу создавать и отлаживать проекты, которые я делаю сам. Это ЭТОТ конкретный проект или что-то о том, как он построен, который предотвращает отладку.

Симптомы:

  • Запуск программы с помощью кнопки «Отладка» запускает программу, но наличие точки останова приводит к зависанию программы в браузере, в котором она выполняется
  • Удаление точки останова или остановка отладчика позволяет браузеру разморозиться и продолжить работу в обычном режиме
  • Ни в коем случае точка останова фактически не будет достигнута и не взломана в отладчике
  • Попытка поместить точку останова во время выполнения приводит к внутренней ошибке: java.lang.NullPointerException
  • Пример сообщения журнала из .metadata / .log

    java.lang.NullPointerException
    !STACK 0
    !MESSAGE Error processing debugger commands
    !ENTRY com.adobe.flexbuilder.project 4 43 2011-08-24 13:35:07.404
      at java.lang.Thread.run(Thread.java:680)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.run(FlexDebugTarget.java:793)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.eventLoop(FlexDebugTarget.java:732)
      at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread$1.run(FlexDebugTarget.java:752)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.access$7(FlexDebugTarget.java:642)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.advanceStateMachine(FlexDebugTarget.java:668)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget$FdbThread.installDeferredBreakpoints(FlexDebugTarget.java:637)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget.access$4(FlexDebugTarget.java:1006)
      at com.adobe.flexbuilder.debug.model.FlexDebugTarget.instantiateBreakpoint(FlexDebugTarget.java:1012)
      at com.adobe.flexbuilder.debug.breakpoints.FlexLineBreakpoint.instantiate(FlexLineBreakpoint.java:465)
      at com.adobe.flexbuilder.debug.breakpoints.FlexLineBreakpoint.findSourceFiles(FlexLineBreakpoint.java:412)
    

Попытки исправить:

  • Очищенный проект
  • Очистил кеш браузера
  • Пробовал разные браузеры (да, у меня есть отладочный плеер)
  • Удалено. Метаданные
  • Удаленное рабочее пространство
  • Переустановленный Flash Builder
  • Переустановлен Debug Flash Player
  • Перезагрузка Mac
  • Попробовал другой SDK
  • Изменение порядка предпочтений Java для 32- и 64-разрядных конфигураций
  • Удалены символические ссылки из конфигурации проекта (то есть символические ссылки больше не нужны для правильного поиска места сборки или запуска)
  • Очистка Flash-журналов
  • Убедитесь, что не более одной версии программы скомпилировано (поэтому она не может быть запущена из другого места)
  • Явно включена отладка через аргумент компилятора: -debug=true
  • Изменение практически всех значимых и несоответствующих настроек в свойствах проекта

Детали проекта:

  • Интересно, что нажатие на Приложения Actionscript в Свойствах проекта приводит к тому, что Flash Builder сразу перестает отвечать на запросы
  • Использует сторонние библиотеки для функций, которые могут быть или не быть сборками Debug
  • Использует сторонний код для функциональности, которая включена в остальную часть кода через ActionScript Build Path> Source path (обратите внимание, что эта папка должна быть явно включена для этого проекта, даже если указанный путь уже находится в исходном каталоге)
  • Запускается с локального веб-сервера, получая доступ к локальной базе данных с использованием настраиваемого домена, который не является ни «localhost», ни IP-адресом (изменен для проблем с файлами cookie Chrome), скорее, он выглядит как http://programname.local/
  • Запуск конфигурации запускает веб-браузер с правильного локального URL (в отличие от запуска из файла), вероятно, не имеет значения
  • Существует еще один дополнительный аргумент компилятора, который просто создает глобальную постоянную времени компиляции, вероятно, не относящуюся к делу
  • Исходные и проектные каталоги содержат папки и файлы репозитория svn, вероятно, неактуальные
  • У меня есть NDA, поэтому я могу говорить только о проекте и его структуре, я не могу опубликовать код

Конфигурация:

  • Mac OS 10.6.8
  • Flash Builder 4 (до версии CS5)
  • Flex SDK 4.0 и 4.5.1

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Разобрался. Наше приложение использует предварительный загрузчик, который я всегда получал от других. Я предполагал, что это было скомпилировано для отладки, потому что я всегда получал свою копию с нашего сервера отладки. Я не до конца понял, как это работает или что делает.

Из-за ошибки Flash в предзагрузчике, сегодня утром я был вынужден скомпилировать его впервые. Компиляция его в обычном режиме (в качестве отладки) Я понял, что проблема с не отладочными SWF-файлами, возникающими при загрузке отладочных SWF-файлов, может возникнуть здесь.

Точки останова работали как положено, как только я правильно скомпилировал прелоадер и исправил его ошибку. По-видимому, наш preloader выполняет фактическую загрузку основного приложения. Flash Builder, очевидно, не может справиться с этой настройкой (без отладочной загрузки SWF-файла отладки), тогда как FlashDevelop, очевидно, может.

0 голосов
/ 25 августа 2011

Вы пробовали перезагрузить Mac?

Я чувствую твою боль, и твой список попыток исправить это то, что я попробую сначала:)

У меня была похожая ситуация с этим, и после нескольких часов ругательства Adobe, я перезапустил свой Mac, и это решило его (вероятно, какая-то ошибка памяти).

...