Действие плагина Eclipse: Подключите отладчик Eclipse к удаленному Java-приложению программным способом - PullRequest
0 голосов
/ 18 марта 2011

Извините, этот вопрос является дубликатом этого поста внутри форума Eclipse.Поскольку форум Eclipse, кажется, не очень отзывчив, я пытаюсь здесь попытаться.Я уже реализовал эту функциональность с NetBeans, , как описано здесь , но теперь мне нужны те же функции для Eclipse.

В моей среде разработки, удаленный Java-сервер, который мне нужноdebug меняет свой IP-адрес очень часто (я не могу изменить этот факт).Поэтому мне часто приходится менять IP-адрес этого сервера в моей конфигурации отладки Eclipse, где мне приходится обновлять адрес удаленного Java-приложения.

Я могу определить IP-адрес программно (он может быть прочитан из файла свойств), поэтому я также хотел бы, чтобы Eclipse использовал этот «динамический» IP-адрес без необходимости вводить его вручную в GUI при каждом изменении адреса.

Первый вопрос:Мне даже нужно написать плагин Eclipse для моделирования этого варианта использования?Или я могу использовать параметр командной строки, который управляет работающим экземпляром Eclipse?То, что я действительно хотел бы, было бы, если бы я мог запускать Eclipse из командной строки, передавая IP-адрес Eclipse, который должен затем подключить отладчик, как следующая «псевдо-команда»:

eclipse --debugger.attach.remote;address=192.168.178.111:9009

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

Второй вопрос: если мне нужно написать плагин для этого (который должен простопредоставить одну простую кнопку, которая запускает поиск IP-адреса в файле свойств, а затем запрашивает Eclipse, чтобы присоединить его отладчик к этому IP-адресу), как я могу начать?Можете ли вы предложить мне модуль Eclipse, к которому я должен получить доступ для управления отладчиком Eclipse, и, возможно, некоторые документы / примеры / руководства, как его использовать?Что было бы ЧРЕЗВЫЧАЙНО здорово, так это фрагмент кода, который показывает, как подключить Eclipse Debugger к плагину Eclipse.

Заранее спасибо за каждый совет!

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

РЕДАКТИРОВАТЬ:

Поскольку я уже планирую написать Eclipse-Plugin-Suite большего размера снесколько функций для моей повседневной работы (и я хочу изучить разработку плагинов Eclipse в целом), я не хочу обходить эту проблему, например, с помощью файла hosts (хотя это действительно хороший и простой подход).Как я и просил, я хочу подключить отладчик из плагина Eclipse.

Ответы [ 2 ]

1 голос
/ 18 марта 2011

IP-адресу можно присвоить имя, используя файл hosts .

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

Другой вариант -используйте переменную в своем запуске.Откройте диалоговое окно конфигурации запуска, нажмите кнопку «Переменные ...» под «Аргументами виртуальной машины» и выберите «string_prompt».

Eclipse запомнит последнее значение для вас.

Последняя опцияВы можете настроить DNS-сервер для своей сети и разрешить IP-адрес для всех.

0 голосов
/ 15 июня 2013

У меня сегодня такой же вопрос. Чтобы программно подключить отладчик Eclipse, вы программно создаете конфигурацию запуска, которая затем запускается. Рабочая область должна содержать проект, содержащий исходный код приложения для отладки.

ILaunchConfigurationWorkingCopy remoteDebugLaunchConfig = createRemoteDebugLaunchConfiguration("ProjectNameThatHasTheSourceCode", "8000");
DebugUITools.launch(remoteDebugLaunchConfig, ILaunchManager.DEBUG_MODE);

Метод createRemoteDebugConfiguration создает конфигурацию удаленного запуска отладки:

private ILaunchConfigurationWorkingCopy createRemoteDebugLaunchConfiguration(final String projectName, final String port) throws CoreException {
    ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
    ILaunchConfigurationType type = manager
            .getLaunchConfigurationType(IJavaLaunchConfigurationConstants.ID_REMOTE_JAVA_APPLICATION);

    final ILaunchConfigurationWorkingCopy remoteDebugConfig = type.newInstance(null, "remote debug");

    // Set project
    remoteDebugConfig.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME, projectName);

    // Set JVM debugger connection parameters
    Map<String, String> connectionParameters = new HashMap<String, String>();
    connectionParameters.put("hostname", "localhost");
    connectionParameters.put("port", port);
    remoteDebugConfig.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CONNECT_MAP, connectionParameters);
    remoteDebugConfig.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_CONNECTOR,
            "org.eclipse.jdt.launching.socketAttachConnector");
    return remoteDebugConfig;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...