Отладка подключаемых модулей Eclipse

Это моя первая попытка создания плагина Eclipse. Я создал один, а также сайт с функцией и обновлением. Я установил целевую платформу в качестве локальной установки Eclipse. Когда я запускаю/отлаживаю плагин из среды разработки, все работает нормально.

Теперь мой коллега установил плагин с сайта обновления, который я разместил. Когда он начинает использовать любую функциональность, открытую моим плагином, он получает исключения во время выполнения.

  • Он видит исключения с нулевым указателем, которые не возникали, когда я запускал проект подключаемого модуля из моей среды разработки.
  • У меня есть мастер, который является частью моего подключаемого модуля. Когда он закрывает его, он получает "Необработанное исключение цикла событий", и мастер не закрывается. У меня не было этой проблемы, когда я запускал/отлаживал мой плагин в своей среде разработки.

Теперь я смущен тем, почему тот же плагин ведет себя по-разному в рабочей среде, в отличие от среды dev, и когда я отлаживал ее из своей IDE. Целевая платформа в обоих случаях - это одна и та же версия Eclipse. В чем могут быть причины?

И как мне отладить подключаемый модуль в рабочей среде? Есть ли возможность удаленной отладки для отладки плагинов в рабочей среде? Любые предложения будут действительно полезными!

Ответ 1

Чтобы удаленно отлаживать ваш плагин, сначала добавьте аргументы отладки в целевой файл Eclipse.ini

-vmargs
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044

прежде чем запускать его.

Затем откройте другой экземпляр Eclipse с рабочей областью, содержащей ваш проект подключаемого модуля. Откройте "Выполнить" > "Конфигурации отладки...", выберите "Удаленное приложение Java" и создайте новую конфигурацию.

Как проект, просмотрите и выберите проект подключаемого модуля. Также заполните ваши свойства соединения (узел целевого Eclipse и порт 1044).

Запуск недавно созданной конфигурации отладки позволяет отлаживать ваш подключаемый модуль так же, как вы отлаживаете локально.

Ответ 2

Теперь я смущен тем, почему тот же плагин ведет себя по-другому в рабочей среды, в отличие от среды разработки, и когда я отлаживал его из моей IDE. В обоих случаях целевая платформа - это такая же версия затмения. В чем могут быть причины?

Это классика: плагины Eclipse и приложения RCP действительно ведут себя по-разному между PDT (Eclipse IDE) и экспортированным продуктом.

В вашем случае исключение NullPointerException, выведенное из экспортированной версии, но не из Eclipse, в 9 раз из 10 представляет собой изображение или другие файлы ресурсов (свойства и т.д.), которые загружаются вашим кодом, но не указаны в сборке. свойства вашего плагина.

В любом случае, вам нужно будет проверить журналы, чтобы извлечь стек и выследить его причину. Такие журналы можно найти в рабочей области вашего друга в файле le .metadata/.log

Ответ 3

В рабочей области разработки, как она есть сейчас, используйте пункт меню "Debug As → Eclipse Application", чтобы запустить тестовое рабочее пространство. Когда он запустится, у вас будет две рабочие области: исходная рабочая область разработки и новое тестовое рабочее пространство. Вы можете установить контрольные точки в своем коде плагина в рабочей области разработки и запустить свой плагин в рабочей области тестирования.

Когда выполнение вашего плагина в рабочей области теста попадает на одну из ваших контрольных точек, выполнение приостанавливается, и вы можете использовать представление Debug в рабочей области разработки, чтобы посмотреть на переменные, установить больше контрольных точек или что-то еще, что вы хотите сделать, чтобы дебютировать ваши плагин.

Ответ 4

Смотрите Apache Wiki для разработки с Eclipse.

В Windows 10 с Tomcat, запущенным как служба Windows, я начал:

tomcat8.5\bin\Tomcat8w.exe

& добавлен на вкладке Java в качестве первой записи в Параметры Java для включения удаленной отладки:

-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n