JavaScript Debugger

Материал из DevelopmenOnTheEdge
Перейти к: навигация, поиск

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

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

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

Run JavaScript (Local)

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

Known issues

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

Debug JavaScript (Local)

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

Known issues

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

Debug JavaScript Query (Local)

Как и JavaScript операции, JavaScript запросы тоже возможно отлаживать. При открытом редакторе JavaScript запроса (это, конечно, будет JavaScript редактор) на основном тулбаре Eclipse будут кнопки "Run JavaScript Query (Local)", "Debug JavaScript Query (Local)" и "Set Current Query As Remotely Debugged".

  • Нажатие на первую кнопку просто запускает запрос, результат которого будет отображён во вкладке "Query Executor" (в отличие от обычных, SQL запросов, вкладка "Raw SQL" не будет заполнена, посколько JavaScript запрос не генерирует SQL).
  • Нажатие на вторую кнопку аналогично первой, но оно запускает запрос на отладку.
  • Нажатие на третью кнопку заносит в настройки BeanExplorer4 проекта (в базу данных) информацию о том, что данный запрос должен является отлаживаемым, и при попытке открыть его через браузер, BE4 приложение записнет и будет ждать подключения отладчика. При этом заносятся следующие параметры в таблицу systemsettings:
    • JAVA_SCRIPT_QUERY_DEBUG_MODE ("true" или "false")
    • JAVA_SCRIPT_QUERY_TO_DEBUG (например, "Fast Input Data JS")
    • JAVA_SCRIPT_QUERY_SOURCE_NAME (например, "/condo4/src/js/queries/Fast Input Data JS.js")