Віддалена налагодження Tomcat за допомогою Eclipse


95

Здається, я не можу налагодити програму tomcat через Eclipse. Я встановив

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

а потім я біжу bin/catalina.sh, де я бачу вихід сказати , що це прослуховування для dt_socketна port 8000. Але всякий раз, коли я намагаюся підключитися до порту 8000в Eclipse (додавши запис у меню віддаленого Java-додатка), він скаржиться на відмовлене підключення. Якісь ідеї?


Ви можете розмістити свою віддалену конфігурацію, яка використовується в eclipse.
Шон,

Відповіді:


133

Чи можете ви перевірити, чи це працює?

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

catalina.sh jpda start

4
Власне, твої це виправили. Eclipse насправді нічого не говорить при успішному підключенні, і повторне підключення вдруге змушує помилку. Тож це працювало, але я просто не помітив.
віктор

18
Це для тих, хто працює в ОС Windows:set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n catalina.bat jpda start
Lee Chee Kiam

1
Що робить параметр suspend = n?
Трисмегістос

2
@Trismegistos. suspendвизначає, чи слід jvm чекати налагоджувача або продовжувати. Див. Цей документ .
Рагхурам,

9
Насправді catalina.sh jpda startповинно бути достатньо. Catalina.sh має кілька JPDA_*параметрів, які можна використовувати, наприклад, для зміни порту, див. Файл для документації.
zpon

53

Я витратив на це деякий час, щоб отримати потрібну інформацію.

Тож ось детальна інформація крок за кроком.

Середовище: Windows 7

Версія TomCat: 7.0

IDE: Затьмарення

Додано конфігурації для увімкнення віддаленої налагодження за допомогою програми tomcat

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

Я не рекомендую наведені вище конфігурації для середовища, не для Windows. Щоб додати описану вище конфігурацію, двічі клацніть на сервері tomcat, який буде доступний у поданні сервера. Знайдіть наведений нижче знімок екрана. введіть тут опис зображення

Тепер додайте вищезазначену конфігурацію середовища виконання до tomcat. Для цього перевірте знімок екрана нижче.

введіть тут опис зображення

Тепер потрапив на вкладку Arugments в редагуванні властивостей конфігурації запуску, як показано на знімку екрана нижче.

введіть тут опис зображення

Розділ аргументів GoTo VM додайте ці рядки.

-Xdebug

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

введіть тут опис зображення

Тепер дісталася кнопка налагодження, доступна на панелі інструментів eclipse.

введіть тут опис зображення

У конфігураціях налагодження знайдіть «Віддалене застосування Java» та двічі клацніть по ній.введіть тут опис зображення

У поле Ім'я введіть будь-яке ім'я, яке вам подобається.

У полі проекту за допомогою кнопки перегляду виберіть проект, для якого потрібно виконати віддалену налагодження.

Ім'я хоста - це не що інше, як адреса хосту. Тут я працюю локально, тому це "localhost".

Нарешті, у стовпці "Порт" має бути значення 8000. Окрім текстових полів "Ім'я" та "Проект", інші два стовпці "Хост" і "Порт" будуть заповнені самим затемненням, якщо не матимуть таких самих значень, як зазначено. Перевірте знімок екрана для отримання інформації.введіть тут опис зображення

Тепер клацніть правою кнопкою миші на TomcatServer на консолі сервера, виберіть Додати та Видалити з контекстного меню. З цього діалогового вікна ви можете додати проект на сервер.

Тепер запустіть сік Tomcat.

введіть тут опис зображення

Тепер запустіть TomCatDebugConfiguration з інструмента налагодження.

Востаннє відкрийте внутрішній або зовнішній браузер і запустіть свій проект. Якщо контроль виконання досягає точок розриву, затемнення затемнить на перспективу налагодження.


47

У каталозі tomcat bin, де catalina.batабо .shзнайдено (він же {CATALINA_BASE} / bin), відредагуйте (створіть, якщо немає):

setenv.bat/.sh

Додайте наступний рядок:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

Це все, що вам потрібно зробити, вам не потрібно редагувати catalina.bat(або .sh) файл.

Див. Коментарі в catalina.batабо catalina.sh.

Можливо, вам доведеться відкоригувати синтаксис для вашого конкретного середовища / ситуації. Наприклад, якщо ви вже визначили CATALINA_OPTS, ви можете зробити щось подібне (у середовищі Windows):

set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n

Для налагодження з Eclipse:

запустити-> Конфігурації налагодження ...-> Віддалена програма Java-> Нове

і вкажіть ім'я, проект, який ви налагоджуєте, і хост і порт налагодження tomcat, зазначені вище.


Це працює, вам потрібно буде встановити CATALINA_OPTS у setenv.sh, який знаходиться в каталозі tomcat / bin. Дякую.
Аміт Кумар

1
У моєму setenv.bat це було JAVA_OPTS (tomcat 7)
vikingsteve

Привіт, Філіпе, додав кілька приміток, які можуть допомогти, якщо ні: які версії ОС, Tomcat та eclipse ви використовуєте?
Карл

в setenv.bat в binдиректорії помістити рядок , як set JPDA_OPTS= -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n, використання startup.batдля запуску Tomcat
Paramvir Singh Карвай

33

У catalina.batфайлі, будь ласка, змініть нижче.

  • Крок 1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

  • Крок 2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

  • Крок 3: Запустіть Tomcat з командного рядка, як показано нижче: catalina.sh jpda start

  • Крок 4: Потім у затемненні створіть конфігурацію налагодження

    1. Вкажіть будь-яке ім'я для конфігурації.
    2. Дайте project name.
    3. Вкажіть тип підключення як Standard(Socket Attach)
    4. хост як localhost
    5. port як 8000(або будь-який номер порту, але це має бути таким же і в інших місцях).

Я знайшов CATALINA_OPTS у наступних частинах на catalina.bat,: doStop shift set ACTION = stop set CATALINA_OPTS = goto execCmd: doConfigTest shift set ACTION = configtest set CATALINA_OPTS = goto execCmd де його редагувати? Чи можете ви просто завантажити вміст вашого catalina.bat?
Гопакумар Н.Г.

Здається, ти пишеш одне і те ж двічі. Я пропустив ваш крок 1 - і він працює. Чи можете ви підтвердити, що немає необхідності змінювати CATALINA_OPTS?
Генрі Алоні

для відмінностей між см CATALINA_OPTS і JPDA_OPTS см: stackoverflow.com/questions/11222365 / ...
Mike R

1
Це не буде працювати в Tomcat 8. Для того, щоб він працював у Tomcat 8, вам слід залишити крок 1.
Дейв

@RAJ. Це повністю працювало в Tomcat 6. Дуже дякую.
T8Z

7

Багато з наведених вище відповідей є правильними, але пам’ятайте, що за замовчуванням налагоджувач буде слухати лише на localhost. Якщо ви налагоджуєте віддалений сервер, вам потрібно буде вказати ip-адресу для прослуховування, наприклад

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

catalina.sh jpda start

Зверніть увагу, що адреса зараз 10.1.1.33 : 8000

Звичайно, ви також можете перевірити, яка IP-адреса насправді використовується, запустивши

netstat -an

як на Windows, так і на Linux і відфільтруйте порт за допомогою find(Windows) або grep(Linux).


Думаю, ви маєте на увазі, який ПОРТ насправді використовується, а не який IP .
Абдолла

1
Ні, я маю на увазі "IP-адресу". Якщо ви робите віддалену налагодження (з іншої машини), вам потрібно мати можливість вказати IP-адресу, яка відрізняється від localhost або 127.0.0.1. Звичайно, вам також завжди знадобиться номер порту.
DAB

5

Просто запустіть ./catalina.sh jpda start(forks) або ./catalina.sh jpda run(не fork, не згадується в довідці). Усі згадані тут параметри за замовчуванням мають нормальне значення.


5

Дозвольте мені поділитися простим способом увімкнення режиму віддаленої налагодження в tomcat7 за допомогою eclipse (Windows).

Крок 1: відкрийте файл bin / startup.bat
Крок 2: додайте нижче рядки для налагодження за допомогою параметра JDPA (він повинен починати рядок файлу)

    set JPDA_ADDRESS=8000  
    set JPDA_TRANSPORT=dt_socket  

Крок 3: в тому ж файлі .. перейдіть до кінця файлу, змініть цей рядок -

    call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%  
    instead of line  
    call "%EXECUTABLE%" start %CMD_LINE_ARGS%  

крок 4: потім просто запустіть bin> startup.bat (отже, тепер ваш сервер tomcat працював у віддаленому режимі з портом 8000).

крок 5: після цього дозволяє підключити ваш вихідний проект за допомогою eclipse IDE до віддаленого клієнта.

крок6: В IDE Eclipse перейдіть до "Налагодження конфігурації"

Крок 7: натисніть "віддалений додаток Java" і натисніть "Новий"

крок 8. на вкладці "підключити" встановити значення параметра

   project= your source project  
   connection Type: standard (socket attached)   
   host: localhost  
   port:8000  

крок 9: натисніть кнопку застосувати та налагоджуйте.

отже, нарешті ваш віддалений клієнт eclipse підключений до запущеного сервера tomcat (режим налагодження).

Сподіваюся, що цей підхід може вам допомогти.

З повагою ..


4

Змініть catalina.bat, щоб додати

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

і

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

Необов’язково: Додайте нижній рядок, щоб запустити режим налагодження за замовчуванням під час запуску startup.bat

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

Eclipse або STS виберіть конфігурацію налагодження правою кнопкою миші -> нове

connection type -> Standard socket Attach
Port -> 8000 (as given in the CATALINA_OPTS)
Host -> localhost or IP address

Ця інформація для WINDOWS, але я випадково опинився на вікнах, і це допомогло мені. Дякую!
Дзвінок

2

Якщо все вищезазначене не працює, ви завжди можете додати до сценарію

    set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

2

У tomcat 7 catalina.sh має такий код:

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
  shift
fi

Ii означає, що ви можете налаштувати JPDA за допомогою:

export JPDA_TRANSPORT=dt_socket
export JPDA_ADDRESS=8000
export JPDA_SUSPEND=n

Або з:

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

І нарешті використовуйте:

catalina.sh jpda start

З повагою


Tomcat 8: Змінні JPDA_ можна встановити в setenv.sh без необхідності їх "експортувати". У будь-якому випадку перший парам при запуску повинен бути "jpda". Якщо ви запускаєте tomcat як службу, найкраще змінити скрипт $ {CATALINA_HOME} /bin/startup.sh, додати параметр 'jpda' в останньому рядку перед 'start': ´´exec "$ PRGDIR" / "$ EXECUTABLE "jpda start" $ @ "´´.
Хері

1

Я стикався з цією проблемою під час запуску Tomcat всередині контейнера Docker. Щоб виправити це, переконайтеся, що ви додали аргумент '-p 8000: 8000' у команді запуску докера, щоб виставити цей порт на локальну машину. Звичайно, вам також знадобиться файл setenv.sh у вашому $ {CATALINA_HOME} / bin / у вашому контейнері.


0

Модифікація startup.bat за допомогою CATALINA_OPTS та JPDA_OPTS для мене не спрацювала, але додавши їх до catalina.bat

  1. Змінити catalina.bat

CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, address = 8000, server = y, suspend = n"

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

  1. Змініть startup.bat, щоб включити jpda

змінити виклик "% EXECUTABLE%" почати% CMD_LINE_ARGS% на

виклик "% EXECUTABLE%" jpda start% CMD_LINE_ARGS%

Потім налаштуйте віддалену програму java в конфігураціях налагодження в Eclipse.


0

Перш за все, якщо ви відкриваєте catalina.bat за допомогою текстового редактора, ви бачите, що: "Не встановлюйте змінні в цьому сценарії .....". Тому ніколи не змінюйте його в цьому сценарії, натомість ви можете зробити наступні кроки:

  1. Він радить вам створити новий файл bat з назвою "setenv.bat".
  2. Потім встановіть 2 змінні у цьому файлі bat, такі як:

    встановити CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, address = 8000, server = y, suspend = n"

    встановити JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, address = 8000, server = y, suspend = n"

  3. Нарешті, запустіть це на cmd що: "catalina.bat jpda start"

  4. У IDE створіть конфігурацію віддаленої налагодження та встановіть хост для пов’язаного ip та порту сервера на 8000.


0

Для версії apache-tomcat-8.5.28 просто зробіть це,

catalina.bat jpda start

Як налаштування за замовчуванням вже налаштовані для нас у catalina.bat як

якщо не "% JPDA_OPTS%" == "" goto gotJpdaOpts set JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, address =% JPDA_ADDRESS%, server = y, suspend =% JPDA_SUSPEND%

Тож ніякої іншої конфігурації не потрібно. І коли ви запустите команду catalina.bat jpda start, ви можете побачити порт налагодження 8000 відкритий.



-2

Для apache-tomcat-8.5.28

змінити, JDPA_OPTSяк показано нижче, потім запустити якcatalina.bat jpda start

JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=8000,server=y,suspend=$JPDA_SUSPEND"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.