JavaScript Debugger

Материал из DevelopmenOnTheEdge
Версия от 14:04, 22 августа 2014; Asko (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Оглавление
  • Launchers
  • Подключение к удалённому JavaScript
  • Run JavaScript (Local)
  • Debug JavaScript (Local)


Замечания

Для возможности подключиться удалённым отладчиком к BeanExplorer, необходимо использовать BeanExplorer из ветки js-debug и в файле /common/makefiles/optional_packages.xml подправить строчки

    <property name="RHINO_JAR"       value="${COMMONBINDIR}/js.jar"/>
   
чтобы было так:

   
    <property name="RHINO_JAR"       value="${COMMONBINDIR}/js17R4.jar"/>
(Fixed 14.05.23)
Данное замечание не относится к отладке через Run, Run (Experimental) и Debug (см. ниже).

Launchers

BeanExplorer4 использует возможности Eclipse JavaScript Development Tools (JSDT). JSDT предоставляет два типа launcher'а, относящихся к Rhino: Rhino JavaScript и Remote JavaScript.

Remote JavaScript - это способ подключения к удалённому запуску JavaScript - предполагается, что на каком-то компьютере запущен JavaScript с отладчиком, который открыл порт для подключения и ждёт, что к нему подключится удалённый отладчик.

Rhino JavaScript же представляет одновременно запуск и самого скрипта, и удалённого отладчика к нему. Поскольку этот вид launcher'а запускает скрипт Rhino, но не позволяет при этом выбрать то, откуда брать Java классы, он нам бесполезен.



Подключение к удалённому JavaScript
Remote JavaScript launcher создаётся (как обычно) в "Debug Configurations...". При создании launcher'а необходимо выбрать Connector "Mozilla Rhino - Attaching Connector", ввести host, на котором запущен проект BeanExplorer, и порт 9000 (отладчик на сервере всегда открывает только 9000 порт). После этого можно будет подключиться к отлаживаемой операции, попытавшись открыть её в браузере и запустив ваш launch configuration для подключения.


Для того, чтобы BeanExplorer поднял серверную часть отладчика, необходимо, чтобы в таблице systemsettings были следующие строчки:
  • JAVA_SCRIPT_DEBUG_MODE - включение режима отладки (значение TRUE),
  • JAVA_SCRIPT_OPERATION_TO_DEBUG - имя отлаживаемой операции (например, просто "Test"),
  • JAVA_SCRIPT_SOURCE_NAME - имя файла с отлаживаемой операцией, так, как оно отображается в Eclipse (например, "/condo_be4/src/js/operations/userRegistrations - Test.js").
  • JAVA_SCRIPT_METHOD_TO_DEBUG - имя метода для отладки (остальные методы не будут отлаживаться), одно из:      
        NOTHING,          // there is no methods to debug

        GET_PARAMETERS,   // getParameters
        INVOKE,           // invoke
        GET_REDIRECT_URL, // getRedirectURL
        CUSTOM_GENERIC,   // getCustomAction, getCustomEnctype, getCustomMethod

        CONTEXT,          // the script itself

Установка этих переменных возможна автоматически, посредством нажатия кнопки "Set Current Operation As Remotely Debugged" на основном тулбаре (при открытом редакторе JavaScript). Отключение режима отладки возможен посредством пункта "BeanExplorer"->"Turn Off Server JavaScript Debugging" основного меню.


Known issues:

  1. Несмотря на то, что отладчик успешно подключается и позволяет продолжать запуск скрипта, отлаживаемые скрипт не доходит до конца, так что страница с результатом не открывается. (Fixed 14.05.22)

  1. Может
некорректно реагировать на первый breakpoint: в таком случае для того, 

чтобы увидеть переменные в скрипте, надо поставить хотя бы два breakpoint'а и нажать resume при первой остановке отладчика.


Далее рассматриваются способы запуска JavaScript через BeanExplorer4. Кнопки запуска раположены на основном toolbar'е Eclipse при открытом редакторе JavaScript. Причём операции будут запускаться только при условии, если JavaScript редактор открыть из дерева проекта BE4.


Run JavaScript (Local)

Запуск JavaScript операции в Eclipse. По завершению операции открывается браузер с результатом выполнения операции. В качестве входных данных операции возможно передавать presetValues и выбранные строки с entity. Метод для запуска, как и параметры, выбирается во view "Operation Parameters".

Known issues:

  1. Зависает, если текущая операция - отлаживаемая (systemsettings). (Fixed 14.05.21)

  1. Позволяет запускать только getParameters() и invoke(), но не getRedirectURL().

Debug JavaScript (Local)

Похоже на Run, но запускает скрипт в режиме отладки и требует, чтобы были установлены systemsettings для отладки, и (fixed) пытается подсоединиться к запущенному скрипту удалённым отладчиком через launch configuration с именем "BeanExplorer4", коннектором "Mozilla Rhino - Attaching Connector", хостом localhost и портом 9000.


Known issues:
  1. Скрипт не доходит до конца. Для того, чтобы он дошёл до конца (в таком случае откроется браузер с результатом), необходимо самому ещё раз запустить launch configuration с именем "BeanExplorer4" и запустить скрипт дальше (Resume/F8). (Fixed 14.05.22)

  1. Позволяет запускать только getParameters() и invoke(), но не getRedirectURL().
  2. Нет class loading'а!!! (Fixed 14.05.22)

Debug (Удалил эту операцию)

Отладка операции в Eclipse. Запускает текущий выбранный скрипт на отладку и подключается к нему удалённым отладчиком. При этом в Eclipse (вручную!) должен быть создан launcher для удалённого отладчика с именнем "BeanExplorer4", коннектором "Mozilla Rhino - Attaching Connector", хостом localhost и портом 9000.


Known issues:

  1. В браузере отображается только то, что было распечатано в коде JavaScript.
  2. В контексте лежит не всё (entity, parameters, context, out, connector).


Замечание: Run (Experimental) и Debug по сути своей одно и то же - они нужны для запуска отладки скрипта. Они отличаются способом настроить запуск и своими багами. Когда нормально доделаю отладку, будет только одна из этих команд. Update: теперь уже понятно, какая из них.