13 мая 2014 г.

Adobe Genie Debugging. Как дебажить Genie.

Как дебажить исполнение скриптов Genie.

В одной из статей я писал, как можно прикрутить исполнение скриптов Genie в ваш проект. Однако, стандартный Executor.jar собран без дебажной информации и, если поставить точку остановки внутри класса Executor.class или где-то ещё глубже внутри классов Genie, то она будет проигнорирована.
Что делать?
Нужно просто стянуть source-файлы Genie и пересобрать  все проекты, включив возможность дебага. Самый простой способ пересборки можно сделать антом.


Пошагово:
1. Стягиваем ант с http://ant.apache.org/bindownload.cgi. Устанавливаем.
2. Стягиваем сорцы с http://sourceforge.net/projects/genie.adobe/files/Genie-source.zip/download
3. Распаковываем. Нужные нам проекты будут лежать в папке GenieTool.
4. Находим внутри каждого проекта build-файлы.
Например, внутри проекта Executor есть файлик Executor_Build.xml. Редактируем.
Находим внутри закомментированный кусок с таким текстом:

<javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">
            <src path="src"/>
            <classpath refid="Executor.classpath"/>
</javac>

Здесь описано включение дебаг информации в jar файлик - debug="true".
Дальше можно видеть, какая именно информация будет включена - debuglevel="${debuglevel}".
Выше в этом файле можно найти, что лежит в переменной debuglevel:
<property name="debuglevel" value="source,lines,vars"/> таким образом номера строк, переменные будут добавлены в дебажную инфу.

Этот кусок кода нужно раскомментировать и заменить им тот javac, который уже есть в файлике. Просто раскомментировать и оставить два куска javac - плохая идея. Ант - штука умная и лишней работы делать не любит :)

Закомментированный код в билд-xml файлах есть в проектах Executor, GenieCom, GeniePlugin, GenieUIRobot. Можно добавить debug="true" debuglevel="${debuglevel}" в <javac> других проектов также.

Теперь осталось только собрать всё.
Открываем командную строку, переходим в каталог с сорцами Genie. Заходим в папку Executor и билдимся:


Сбилдились:




Теперь берём полученный Executor.jar в проекте Executor и подключаем в наш проект.

Дебажим: