Удаленная отладка на Tomcat и Intellij

68
9

Я хотел бы понять, как работает удаленная отладка. Мне нужно, чтобы мое приложение было развернуто на tomcat для его работы? Более конкретно, учитывая, что у меня есть исходный код на моей машине, отладчик клиента на IntelliJ, передайте инструкцию кода серверному отладчику на удаленной машине или код уже развернут на этом компьютере.

Из всего примера, который я видел в JDA, приложение должно быть запущено с требуемой опцией на удаленном компьютере, так что отладчик клиента (Front end) может подключиться к задней части отладчика на этом компьютере.

Но мне непонятно, как заставить его работать с Контейнерами, такими как tomact. Из примера, который я читаю, кажется, что приложение в этом случае будет только tomcat и инструкция из исходного кода, переданного проводкой. В самом деле, я не вижу никаких шагов по развертыванию приложения.

Пожалуйста, кто-нибудь может это объяснить.

спросил(а) 2015-04-13T00:55:00+03:00 5 лет, 2 месяца назад
1
Решение
54

Когда вы отлаживаете приложение, развернутое внутри контейнера tomcat, вы должны установить ваше приложение удаленно. Удаленная отладка отлаживает удаленное приложение (которое находится внутри контейнера tomcat). Исходный код, который вы видите в intellij, не передается серверу во время отладки.

Вы можете попробовать немного эксперимента: добавьте некоторые строки в исходный код и поместите на них контрольные точки, затем запустите сеанс удаленной отладки без повторного развертывания. Поскольку вы не синхронизированы между исходным кодом и развернутым кодом, вы увидите, что точки останова на новых строках кода отмечены красным "x" по intellij - это потому, что отладчик не может найти эти строки (по номеру строки ) на сервере.

Отладка может фактически работать и останавливаться на контрольных точках, даже если исходный код, который вы используете в intellij, отличается от кода на удаленном сервере, если точки останова находятся в классах с одинаковыми именами для обоих. Однако фактически выполненный код - это код, который находится на сервере.

В качестве дополнительной заметки вы можете изменить код внутри intellij во время сеанса отладки и немедленно внести изменения в сервер (до конца сеанса отладки). Для этого скомпилируйте измененный класс (ctrl + F9 в intllij), пока сеанс отладки ждет на контрольной точке. Это вызывает метод HotSwap mecahnism.

ответил(а) 2015-04-13T17:18:00+03:00 5 лет, 2 месяца назад
54

Удаленная отладка Tomcat так же проста, как запуск Tomcat следующим образом:

/some/path$ catalina.sh jpda start

Это запустит Tomcat с удаленной отладкой, включенной по умолчанию, 8000. Многие другие вещи, в том числе о том, как изменить этот порт, описаны в FAQ.

ответил(а) 2015-04-13T16:16:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема