Удаленная отладка Tomcat с Eclipse

Я не могу отлаживать приложение 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-приложения), он жалуется на отказ от соединения. Любые идеи?

Ответ 1

Вы можете проверить, работает ли это?

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

catalina.sh jpda start

Ответ 2

Я потратил некоторое время на это, чтобы получить правильную информацию.

Итак, вот подробная информация шаг за шагом.

Среда: Windows 7

Версия TomCat: 7.0

IDE: Eclipse

Конфигурации, которые нужно добавить для включения удаленной отладки в tomcat, это

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

Я не рекомендую эту конфигурацию для среды без окон. Чтобы добавить вышеуказанную конфигурацию, дважды щелкните на сервере tomcat, который будет доступен на сервере. Найдите снимок экрана ниже. enter image description here

Теперь добавьте указанную выше конфигурацию среды выполнения в tomcat. Для этой проверки снимок экрана.

enter image description here

Теперь перейдите на вкладку "Ремиксы" в разделе "Свойства запуска запуска редактирования", как показано ниже.

enter image description here

Раздел аргументов GoTo VM добавляет эти строки.

-Xdebug

-agentlib: JDWP = = транспорт транспорт по сокетам, адрес = 8000, сервер = у, приостановить = п

enter image description here

Теперь появилась кнопка отладки, доступная на панели инструментов eclipse.

enter image description here

В конфигурациях Debug найдите "Remote Java Application" и дважды щелкните по нему. enter image description here

В поле "Имя" введите любое имя, которое вам нравится.

Из поля проекта с помощью кнопки обзора выберите проект, который вы хотите выполнить удаленную отладку.

Имя хоста - это только адрес хоста. Здесь я работаю локально, так что это "localhost".

В последнем столбце Port значение должно быть 8000. Помимо текстовых полей Name и Project другие два столбца Host и порт будут заполнены самим eclipse, если вы не указали те же значения, что и упомянутые. Проверьте снимок экрана для информации. enter image description here

Теперь щелкните правой кнопкой мыши на TomcatServer в консоли сервера, выберите "Добавить и удалить из контекстного меню". В этом диалоговом окне вы можете добавить проект на сервер.

Теперь запустите Tomcat sever.

enter image description here

Теперь запустите TomCatDebugConfiguration из инструмента Debug.

Последний открытый внутренний или внешний браузер и запуск вашего проекта. Если управление выполнением достигло точек разрыва, то затмение будет запрашивать перспективы отладки.

Ответ 3

В каталоге bin tomcat, где найдены catalina.bat или .sh (aka {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:

run- > Конфигурации отладки...- > Удаленное приложение Java- > Новое

и укажите имя, проект, который вы отлаживаете, и порт хоста и отладки tomcat, указанный выше.

Ответ 4

В файле 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 ниже: catalina.sh jpda start

  • Шаг 4: Затем в eclipse создайте конфигурацию отладки

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

Ответ 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 с удаленным клиентом.

step6: В Eclipse IDE перейдите в раздел "Конфигурация отладки"

step7: нажмите "удаленное приложение Java" и нажмите "Новый"

step8. на вкладке "connect" установите значение параметра

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

step9: нажмите применить и отладить.

наконец, ваш удаленный клиент eclipse будет связан с работающим сервером tomcat (режим отладки).

Надеюсь, что этот подход может помочь вам.

С уважением..

Ответ 6

Измените параметр 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

Ответ 7

Просто запустите ./catalina.sh jpda start (forks) или ./catalina.sh jpda run (не fork, не упомянутый в справке). Все параметры, упомянутые здесь, по умолчанию соответствуют нормальным значениям.

Ответ 8

Если все вышеперечисленное не работает, вы всегда можете добавить к script

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

Ответ 9

В 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

Привет

Ответ 10

Я столкнулся с этой проблемой во время запуска Tomcat внутри контейнера Docker. Чтобы исправить это, убедитесь, что вы добавили аргумент -p 8000: 8000 'в команду запуска docker, чтобы открыть этот порт на вашем локальном компьютере. Конечно, вам понадобится файл setenv.sh в вашем $ {CATALINA_HOME}/bin/в вашем контейнере.

Ответ 11

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

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

catalina.sh jpda начало

Обратите внимание, что адрес теперь 10.1.1.33: 8000

Конечно, вы также можете проверить, какой IP на самом деле используется, запустив

нетстат -an

в Windows и Linux и отфильтруйте порт с помощью команды find (Win) или grep (Linux).

Ответ 12

Модификация startup.bat с CATALINA_OPTS и JPDA_OPTS не сработала для меня, но добавила их в catalina.bat.

  • Изменить Catalina.bat

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

JPDA_OPTS = "- agentlib: JDWP = транспорт = транспорт по сокетам, адрес = 8000, сервер = у, подвесьте = п"

  1. Измените startup.bat, чтобы включить jpda

изменить вызов "% EXECUTABLE%" start% CMD_LINE_ARGS% до

вызов "% EXECUTABLE%" jpda start% CMD_LINE_ARGS%

Затем настройте удаленное приложение java в своих конфигурациях отладки в Eclipse.

Ответ 13

Прежде всего, если вы откроете файл catalina.bat с помощью текстового редактора, вы увидите следующее: "Не устанавливайте переменные в этом script....." Поэтому никогда не изменяйте его в этом script, вместо этого вы можете сделать следующие шаги:

  • Он советует вам создать новый файл bat с именем "setenv.bat".
  • Затем установите 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"

  • Наконец, запустите на cmd, что: "catalina.bat jpda start"

  • В среде IDE создайте удаленную конфигурацию отладки и установите для хоста соответствующий ip и порт сервера на 8000.

Ответ 14

Для версии apache-tomcat-8.5.28 просто сделайте это,

catalina.bat jpda start

Поскольку настройки по умолчанию уже настроены для нас в catalina.bat как

если не "% JPDA_OPTS%" == "" goto gotJpdaOpts установлено JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, address =% JPDA_ADDRESS%, server = y, suspend =% JPDA_SUSPEND%

Так что не нужно никакой другой конфигурации. И когда вы запускаете команду catalina.bat jpda start, вы можете увидеть отладочный порт 8000.

Ответ 16

Для apache-tomcat-8.5.28

измените JDPA_OPTS как 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"