JavaScript Debugger — различия между версиями

Материал из DevelopmenOnTheEdge
Перейти к: навигация, поиск
(Новая страница: «<div> <div> <div> <div>Оглавление<br> </div> * Launchers * Подключение к удалённому JavaScript * Run JavaScript (Local)<br> * Debu…»)
 
(Метка: visualeditor)
 
(не показано 9 промежуточных версии этого же участника)
Строка 1: Строка 1:
<div>
+
=== Launchers ===
<div>
+
BeanExplorer4 использует возможности Eclipse JavaScript Development Tools (JSDT). JSDT предоставляет два типа launcher'а, относящихся к Rhino: Rhino JavaScript и Remote JavaScript.
<div>
+
 
<div>Оглавление<br>
+
* Remote JavaScript - это способ подключения к удалённому запуску JavaScript - предполагается, что на каком-то компьютере запущен JavaScript с отладчиком, который открыл порт для подключения и ждёт, что к нему подключится удалённый отладчик.
</div>
+
* Rhino JavaScript же представляет одновременно запуск и самого скрипта, и удалённого отладчика к нему. Поскольку этот вид launcher'а запускает скрипт Rhino, но не позволяет при этом выбрать то, откуда брать Java классы, он нам бесполезен.
* Launchers
+
 
* Подключение к удалённому JavaScript
+
=== Подключение к удалённому JavaScript ===
* Run JavaScript (Local)<br>
+
Remote JavaScript launcher создаётся (как обычно) в "Debug Configurations...". При создании launcher'а необходимо выбрать Connector "Mozilla Rhino - Attaching Connector", ввести host, на котором запущен проект BeanExplorer, и порт 9000 (отладчик на сервере всегда открывает только 9000 порт). После этого можно будет подключиться к отлаживаемой операции, попытавшись открыть её в браузере и запустив ваш launch configuration для подключения.
* Debug JavaScript (Local)
+
 
</div>
+
Для того, чтобы BeanExplorer поднял серверную часть отладчика, необходимо, чтобы в таблице systemsettings были следующие строчки:
</div>
+
<br>
+
</div>
+
<div><span style="font-family:georgia,serif"><font size="4">Замечания</font></span><br>
+
Для возможности подключиться удалённым отладчиком к BeanExplorer, необходимо использовать BeanExplorer из ветки js-debug<strike> и в файле /common/makefiles/optional_packages.xml подправить строчки<br>
+
</strike>
+
<div class="sites-codeblock sites-codesnippet-block"><strike><code>    <property name="RHINO_JAR"       value="${COMMONBINDIR}/js.jar"/></code><br>
+
<code>    <!--property name="RHINO_JAR"       value="${COMMONBINDIR}/js17R4.jar"/--></code></strike></div>
+
</div>
+
<div><strike>чтобы было так:<br>
+
</strike>
+
<div class="sites-codeblock sites-codesnippet-block"><strike><code>    <!--property name="RHINO_JAR"       value="${COMMONBINDIR}/js.jar"/--></code><br>
+
<code>    <property name="RHINO_JAR"       value="${COMMONBINDIR}/js17R4.jar"/></code></strike></div>
+
</div>
+
<div>(Fixed 14.05.23)<br>
+
</div>
+
<div>Данное замечание не относится к отладке через Run, Run (Experimental) и Debug (см. ниже).<br>
+
</div>
+
<div><br>
+
<font size="4"><span style="font-family:georgia,serif">Launchers</span></font><br>
+
</div>
+
BeanExplorer4 использует возможности Eclipse JavaScript Development Tools (JSDT). JSDT предоставляет два типа launcher'а, относящихся к Rhino: <span style="color:rgb(68,68,68)">Rhino JavaScript</span> и <span style="color:rgb(191,144,0)">Remote JavaScript</span>.<br>
+
<br>
+
<span style="color:rgb(191,144,0)">Remote JavaScript</span> - это способ подключения к удалённому запуску JavaScript - предполагается, что на каком-то компьютере запущен JavaScript с отладчиком, который открыл порт для подключения и ждёт, что к нему подключится удалённый отладчик.<br>
+
<br>
+
<span style="color:rgb(68,68,68)">Rhino JavaScript</span> же представляет одновременно запуск и самого скрипта, и удалённого отладчика к нему. Поскольку этот вид launcher'а запускает скрипт Rhino, но не позволяет при этом выбрать то, откуда брать Java классы, он нам бесполезен.<br>
+
<div><br>
+
<br>
+
<div><span style="font-family:georgia,serif"><font size="4">Подключение к удалённому JavaScript</font></span><br>
+
</div>
+
<div>Remote JavaScript launcher создаётся (как обычно) в "Debug Configurations...". При создании launcher'а необходимо выбрать Connector "Mozilla Rhino - Attaching Connector", ввести host, на котором запущен проект BeanExplorer, и порт 9000 (отладчик на сервере всегда открывает только 9000 порт). После этого можно будет подключиться к отлаживаемой операции, попытавшись открыть её в браузере и запустив ваш launch configuration для подключения.<br>
+
<br>
+
</div>
+
<div>Для того, чтобы BeanExplorer поднял серверную часть отладчика, необходимо, чтобы в таблице <span style="color:rgb(255,0,0)">systemsettings</span> были следующие строчки:<br>
+
 
* JAVA_SCRIPT_DEBUG_MODE - включение режима отладки (значение TRUE),
 
* JAVA_SCRIPT_DEBUG_MODE - включение режима отладки (значение TRUE),
 
* JAVA_SCRIPT_OPERATION_TO_DEBUG - имя отлаживаемой операции (например, просто "Test"),
 
* JAVA_SCRIPT_OPERATION_TO_DEBUG - имя отлаживаемой операции (например, просто "Test"),
 
* JAVA_SCRIPT_SOURCE_NAME - имя файла с отлаживаемой операцией, так, как оно отображается в Eclipse (например, "/condo_be4/src/js/operations/userRegistrations - Test.js").
 
* JAVA_SCRIPT_SOURCE_NAME - имя файла с отлаживаемой операцией, так, как оно отображается в Eclipse (например, "/condo_be4/src/js/operations/userRegistrations - Test.js").
* JAVA_SCRIPT_METHOD_TO_DEBUG - имя метода для отладки (остальные методы не будут отлаживаться), одно из:       <br>
+
* 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
  
</div>
+
Установка этих переменных возможна автоматически, посредством нажатия кнопки "Set Current Operation As Remotely Debugged" на основном тулбаре (при открытом редакторе JavaScript). Отключение режима отладки возможен посредством пункта "BeanExplorer"->"Turn Off Server JavaScript Debugging" основного меню.
<div>
+
<div class="sites-codeblock sites-codesnippet-block"><code>        NOTHING,          // there is no methods to debug</code><br>
+
<code>        GET_PARAMETERS,   // getParameters</code><br>
+
<code>        INVOKE,           // invoke</code><br>
+
<code>        GET_REDIRECT_URL, // getRedirectURL</code><br>
+
<code>        CUSTOM_GENERIC,   // getCustomAction, getCustomEnctype, getCustomMethod</code><br>
+
<code>        CONTEXT,          // the script itself</code></div>
+
Установка этих переменных возможна автоматически, посредством нажатия кнопки "Set Current Operation As Remotely Debugged" на основном тулбаре (при открытом редакторе JavaScript). Отключение режима отладки возможен посредством пункта "BeanExplorer"->"Turn Off Server JavaScript Debugging" основного меню.<br>
+
</div>
+
<div><br>
+
</div>
+
<div><span style="color:rgb(153,153,153)">Known issues:<br>
+
</span>
+
# <strike><span style="color:rgb(153,153,153)">Несмотря на то, что отладчик успешно подключается и позволяет продолжать запуск скрипта, отлаживаемые скрипт не доходит до конца, так что страница с результатом не открывается.</span></strike><span style="color:rgb(153,153,153)"> (Fixed 14.05.22)</span><strike><span style="color:rgb(153,153,153)"><br>
+
</span></strike>
+
# <span style="color:rgb(102,102,102)"><span style="color:rgb(153,153,153)">Может
+
некорректно реагировать на первый breakpoint: в таком случае для того,
+
чтобы увидеть переменные в скрипте, надо поставить хотя бы два
+
breakpoint'а и нажать resume при первой остановке отладчика.</span></span>
+
  
</div>
+
==== Known issues ====
<div><br>
+
* Может некорректно реагировать на первый breakpoint: в таком случае для того, чтобы увидеть переменные в скрипте, надо поставить хотя бы два breakpoint'а и нажать resume при первой остановке отладчика.
</div>
+
<div>Далее рассматриваются способы запуска JavaScript через BeanExplorer4. Кнопки запуска раположены на основном toolbar'е Eclipse при открытом редакторе JavaScript. Причём операции будут запускаться только при условии, если JavaScript редактор открыть из дерева проекта BE4.<br>
+
<br>
+
</div>
+
<font size="4"><span style="font-family:georgia,serif">Run JavaScript (Local)</span></font><br>
+
</div>
+
<div>Запуск JavaScript операции в Eclipse. По завершению операции открывается браузер с результатом выполнения операции. В качестве входных данных операции возможно передавать presetValues и выбранные строки с entity. Метод для запуска, как и параметры, выбирается во view "Operation Parameters".<br>
+
</div>
+
<div><br>
+
</div>
+
<div><span style="color:rgb(153,153,153)">Known issues:<br>
+
</span>
+
# <strike><span style="color:rgb(153,153,153)">Зависает, если текущая операция - отлаживаемая (<span style="color:rgb(255,0,0)">systemsettings</span>).</span></strike><span style="color:rgb(153,153,153)"> (Fixed 14.05.21)</span><strike><span style="color:rgb(153,153,153)"><br>
+
</span></strike>
+
# <span style="color:rgb(102,102,102)"><span style="color:rgb(153,153,153)">Позволяет запускать только getParameters() и invoke(), но не getRedirectURL().</span></span>
+
  
</div>
+
Далее рассматриваются способы запуска JavaScript через BeanExplorer4. Кнопки запуска раположены на основном toolbar'е Eclipse при открытом редакторе JavaScript. Причём операции будут запускаться только при условии, если JavaScript редактор открыть из дерева проекта BE4.
<div><br>
+
<font size="4"><span style="font-family:georgia,serif">Debug JavaScript (Local)</span></font><br>
+
</div>
+
<div>Похоже на Run, но запускает скрипт в режиме отладки и <strike>требует, чтобы были установлены <span style="color:rgb(255,0,0)">systemsettings</span> для отладки, и</strike> (fixed) пытается подсоединиться к запущенному скрипту удалённым отладчиком <strike>через <span style="color:rgb(191,144,0)">launch configuration</span> с именем "BeanExplorer4", коннектором "Mozilla Rhino - Attaching Connector", хостом localhost и портом 9000</strike>.<br>
+
<span style="background-color:rgb(153,153,153)"><br>
+
</span></div>
+
<div><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)">Known issues:<br>
+
</span></span></div>
+
<div>
+
# <strike><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)">Скрипт не доходит до конца. Для того, чтобы он дошёл до конца (в таком случае откроется браузер с результатом), необходимо самому ещё раз запустить launch configuration с именем "BeanExplorer4" и запустить скрипт дальше (Resume/F8).</span></span></strike><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)"> (Fixed 14.05.22)</span></span><strike><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)"><br>
+
</span></span></strike>
+
# <span style="color:rgb(102,102,102)"><span style="color:rgb(153,153,153)">Позволяет запускать только getParameters() и invoke(), но не getRedirectURL().</span></span>
+
# <span style="color:rgb(102,102,102)"><span style="color:rgb(153,153,153)"><strike>Нет class loading'а!!!</strike></span></span><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)"> (Fixed 14.05.22)</span></span>
+
  
</div>
+
=== Run JavaScript (Local) ===
<div><br>
+
Запуск JavaScript операции в Eclipse. По завершению операции открывается браузер с результатом выполнения операции. В качестве входных данных операции возможно передавать presetValues и выбранные строки с entity. Метод для запуска, как и параметры, выбирается во view "Operation Parameters".
<strike><font size="4"><span style="font-family:georgia,serif">Debug</span></font> </strike>(Удалил эту операцию)<strike><br>
+
</strike></div>
+
<div><strike>Отладка операции в Eclipse. Запускает текущий выбранный скрипт на отладку и подключается к нему удалённым отладчиком. При этом в Eclipse (вручную!) должен быть создан <span style="color:rgb(191,144,0)">launcher</span> для удалённого отладчика с именнем "BeanExplorer4", коннектором "Mozilla Rhino - Attaching Connector", хостом localhost и портом 9000.<br>
+
<span style="background-color:rgb(153,153,153)"><br>
+
</span></strike></div>
+
<div><strike><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)">Known issues:<br>
+
</span></span></strike>
+
# <strike><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)">В браузере отображается только то, что было распечатано в коде JavaScript.</span></span></strike>
+
# <strike><span style="color:rgb(153,153,153)"><span style="background-color:rgb(255,255,255)">В контексте лежит не всё (entity, parameters, context, out, connector).</span></span></strike>
+
  
 +
==== Known issues ====
 +
* Позволяет запускать только getParameters() и invoke(), но не getRedirectURL().
  
 +
=== Debug JavaScript (Local) ===
 +
Похоже на Run, но запускает скрипт в режиме отладки и пытается подсоединиться к запущенному скрипту удалённым отладчиком (при этом автоматически создаётся launch configuration с именем "BeanExplorer4", коннектором "Mozilla Rhino - Attaching Connector", хостом localhost и портом 9000).
  
<strike>Замечание: Run (Experimental) и Debug по сути своей одно и то же - они нужны для запуска отладки скрипта. Они отличаются способом настроить запуск и своими багами. Когда нормально доделаю отладку, будет только одна из этих команд. <span style="color:rgb(103,78,167)">Update: теперь уже понятно, какая из них.</span></strike>
+
==== Known issues ====
 +
* Позволяет запускать только getParameters() и invoke(), но не getRedirectURL().
  
</div>
+
=== Debug JavaScript Query (Local) ===
<div><br>
+
Как и JavaScript операции, JavaScript запросы тоже возможно отлаживать. При открытом редакторе JavaScript запроса (это, конечно, будет JavaScript редактор) на основном тулбаре Eclipse будут кнопки "Run JavaScript Query (Local)", "Debug JavaScript Query (Local)" и "Set Current Query As Remotely Debugged".
<div>
+
* Нажатие на первую кнопку просто запускает запрос, результат которого будет отображён во вкладке "Query Executor" (в отличие от обычных, SQL запросов, вкладка "Raw SQL" не будет заполнена, посколько JavaScript запрос не генерирует SQL).
<div>
+
* Нажатие на вторую кнопку аналогично первой, но оно запускает запрос на отладку.
<div>
+
* Нажатие на третью кнопку заносит в настройки BeanExplorer4 проекта (в базу данных) информацию о том, что данный запрос должен является отлаживаемым, и при попытке открыть его через браузер, BE4 приложение записнет и будет ждать подключения отладчика. При этом заносятся следующие параметры в таблицу systemsettings:
<div></div>
+
** <code>JAVA_SCRIPT_QUERY_DEBUG_MODE</code> ("true" или "false")
</div>
+
** <code>JAVA_SCRIPT_QUERY_TO_DEBUG</code> (например, "Fast Input Data JS")
</div>
+
** <code>JAVA_SCRIPT_QUERY_SOURCE_NAME</code> (например, "/condo4/src/js/queries/Fast Input Data JS.js")
</div>
+
</div>
+

Текущая версия на 11:10, 11 сентября 2014

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")