programing

이클립스를 사용한 Tomcat 원격 디버깅

iphone6s 2023. 4. 27. 21:56
반응형

이클립스를 사용한 Tomcat 원격 디버깅

이클립스를 통해 톰캣 애플리케이션을 디버그할 수 없는 것 같습니다.설정했습니다.

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

그리고 나는 달립니다.bin/catalina.sh수신 중이라는 출력이 표시됩니다.dt_socketport 8000 포트에 하려고 할 마다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ8000Eclipse에서는 (원격 Java 애플리케이션 메뉴에 항목을 추가하여) 연결이 거부되었다고 불평합니다.아이디어 있어요?

이것이 작동하는지 확인해 주시겠습니까?

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

catalina.sh jpda start

저는 정확한 정보를 얻기 위해 이것에 시간을 보냈습니다.

그래서 여기에 단계별로 상세한 정보가 있습니다.

환경: Windows 7

TomCat 버전: 7.0

IDE: 이클립스

Tomcat을 사용하여 원격 디버깅을 활성화하기 위해 추가할 구성은 다음과 같습니다.

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

윈도우즈가 아닌 환경에서는 위의 구성을 권장하지 않습니다.위의 구성을 추가하려면 서버 보기에서 사용할 수 있는 Tomcat 서버를 두 번 클릭합니다.아래 스크린샷을 찾습니다. 여기에 이미지 설명 입력

이제 위의 런타임 환경 구성을 Tomcat에 추가합니다.아래 스크린샷에서 확인할 수 있습니다.

여기에 이미지 설명 입력

이제 아래 스크린샷에 표시된 것처럼 시작 구성 속성 편집의 인수 탭으로 이동합니다.

여기에 이미지 설명 입력

VM으로 이동 인수 섹션에서 이 행을 추가합니다.

-X디버그

-agentlib:jdwp=sys=dt_sys, 주소=8000, 서버=y, syslog=n

여기에 이미지 설명 입력

이제 eclipse 도구 모음에서 사용할 수 있는 디버그 단추가 있습니다.

여기에 이미지 설명 입력

디버그 구성에서 "원격 Java 응용프로그램"을 찾아 두 번 클릭합니다.여기에 이미지 설명 입력

이름 필드에 원하는 이름을 입력합니다.

찾아보기 버튼을 사용하여 프로젝트 필드에서 원격 디버그를 수행할 프로젝트를 선택합니다.

호스트 이름은 호스트 주소에 불과합니다.여기서 저는 로컬에서 일하고 있기 때문에 "localhost"입니다.

마지막 포트 열 값은 8000이어야 합니다.이름 및 프로젝트 텍스트 필드를 제외하고 다른 두 열 호스트 및 포트는 언급된 것과 동일한 값을 갖도록 하지 않으면 일식 자체로 채워집니다.자세한 내용은 스크린샷을 확인하십시오.여기에 이미지 설명 입력

이제 서버 콘솔에서 TomcatServer를 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 추가 및 제거를 선택합니다.이 대화 상자에서 프로젝트를 서버에 추가할 수 있습니다.

이제 Tomcat 서버를 실행합니다.

여기에 이미지 설명 입력

이제 디버그 도구에서 TomCatDebugConfiguration을 실행합니다.

마지막으로 내부 또는 외부 브라우저를 열고 프로젝트를 실행합니다.실행 제어가 중단점에 도달하면 이클립스는 디버그 관점을 묻는 메시지를 표시합니다.

에서 Tomcat bin은 과 같습니다.catalina.bat또는.sh검색됨({CATALINA_BASE}/bin이라고도 함), 편집(없는 경우 생성

setenv.bat/.sh

다음 행을 추가합니다.

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

▁the▁▁that이작됩다니t▁need▁를 편집할 필요는 없습니다. 편집할 필요는 없습니다.catalina.bat(또는).sh) 파일.

의설을의 하세요.catalina.bat또는catalina.sh.

특정 환경/상황에 맞게 구문을 조정해야 할 수도 있습니다.예를 들어 이미 CATALINA_OPTS를 정의한 경우 윈도우즈 환경에서 다음과 같은 작업을 수행할 수 있습니다.

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

Eclipse에서 디버그하기

실행 ->디버그 구성...->원격 Java 애플리케이션->새로 만들기

이름, 디버깅 중인 프로젝트, 위에서 지정한 Tomcat 호스트 및 디버그 포트를 지정합니다.

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. 를 함표현으로 합니다.8000(또는 임의의 포트 번호이지만 다른 위치에서도 동일해야 합니다.)

위의 답변 중 많은 부분이 옳지만 기본적으로 디버거는 localhost에서 수신합니다. 즉, 디버깅 클라이언트(예: IDE)를 동일한 컴퓨터에서 실행하는 경우에만 디버그할 수 있습니다.

원격 서버를 디버깅하는 경우 수신 대기할 서버의 올바른 IP 주소를 지정해야 합니다.

JPDA_OPTS="-agentlib:jdwp=ipsec=dt_socket, 주소=10.1.1.33:8000, 서버=y, 일시 중단=n"

카탈리나shjpda 시작

현재 주소는 10.1.1.33:8000입니다.

물론, 실제로 어떤 IP가 사용되고 있는지 확인할 수도 있습니다.

netstat -an

할 수 . 포트를 "" "" "" "" "" "로 만 하면 됩니다. 포트를 필터링하려면find (Windows) 는grep(Linux).

그냥 도망가./catalina.sh jpda start 또는 (으)ㄴ./catalina.sh jpda run(포킹하지 않음, 도움말에 언급되지 않음).여기에 언급된 모든 옵션은 기본적으로 정상 값으로 설정됩니다.

Tomcat7에서 원격 디버깅 모드를 활성화하는 간단한 방법을 eclipse(Windows)와 공유하겠습니다.

bin/ file1 파일: 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>syslog.bat만 실행합니다(그래서 이제 Tomcat 서버는 포트 8000으로 원격 모드로 실행되었습니다).

5단계: 그런 다음 Eclipse IDE로 원격 클라이언트와 소스 프로젝트를 연결합니다.

6단계: Eclipse IDE에서 "디버그 구성"으로 이동합니다.

7단계: "원격 Java 애플리케이션"을 클릭하고 "새로 만들기"를 클릭합니다.

8단계. "연결" 탭에서 매개변수 값 설정

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

9단계: 적용 및 디버그를 클릭합니다.

마지막으로 이클립스 원격 클라이언트가 실행 중인 Tomcat 서버에 연결됩니다(슬립스 모드).

이 접근 방식이 도움이 되기를 바랍니다.

잘 부탁드립니다.

추가할 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

선택 사항:시작할 때 기본적으로 디버그 모드를 실행하려면 아래 줄을 추가하십시오.박쥐

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

Eclipse 또는 STS 디버그 구성 선택 오른쪽 클릭 -> new

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

그래도 위의 모든 것이 작동하지 않으면 언제든지 스크립트에 추가할 수 있습니다.

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

Tomcat 7, 카탈리나.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

안부 전해요

apache-tomcat-8.5.28 버전의 경우 이렇게 하십시오.

catalina.bat jpda start

catalina.batas에서 이미 구성된 기본 설정으로

%J가 아니라면PDA_OPTS%" == "got to gotJpdaOpts set JPDA_OPTS=-agentlib:jdwp=filename=%JPDA_TRANSPORT, 주소=%JPDA_ADDRESS, 서버=y, 일시 중단=%JPDA_SUSPENET%

따라서 다른 구성이 필요하지 않습니다.그리고 당신이 catalina 명령을 실행할 때.bat jpda start, 디버그 포트 8000이 열려 있는 것을 볼 수 있습니다.

저는 도커 컨테이너 안에서 Tomcat을 실행하는 동안 이 문제를 해결했습니다.이 문제를 해결하려면 docker run 명령에 '-p 8000:8000' 인수를 추가하여 이 포트를 로컬 컴퓨터에 노출해야 합니다.물론 ${CATA}에 setenv.sh 파일이 필요합니다.LINA_HOME}/bin/도 컨테이너 내에 있습니다.

카탈리나_OPTS와 JPDA_OPTS를 사용하여 startup.bat를 수정하는 것은 나에게 효과가 없었지만 그것들을 카탈리나.bat에 추가하는 것은 효과가 있었습니다.

  1. 카탈리나를 수정합니다.박쥐

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

JPDA_OPTS="-agentlib:jdwp=dt=dt_socket, 주소=8000, 서버=y, 일시 중단=n"

  1. jpda를 포함하도록 startup.bat을 수정합니다.

%EXECUTABLE% 호출을 %CMD_LINE_ARGS% 시작으로 변경

%EXECUTABLE%" jpda 시작 %CMD_LINE_ARGS% 호출

그런 다음 Eclipse의 디버그 구성에서 원격 Java 애플리케이션을 구성합니다.

먼저 텍스트 편집기로 catalina.bat을 열면 "이 스크립트에서 변수를 설정하지 마십시오..."라는 메시지가 표시됩니다. 따라서 해당 스크립트에서 변수를 변경하지 마십시오. 대신 다음 단계를 수행할 수 있습니다.

  1. 이름이 "setenv.bat"인 새 bat 파일을 생성하는 것이 좋습니다.
  2. 그런 다음 해당 bat 파일에 다음과 같은 변수 2개를 설정합니다.

    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket, 주소=8000, 서버=y, suspend=n"을 설정합니다.

    set JPDA_OPTS="-agentlib:jdwp=dt=dt_socket, 주소=8000, 서버=y, 일시 중단=n"

  3. 마지막으로 cmd에서 "catalina"를 실행합니다.bat jpda start"

  4. IDE에서 원격 디버그 구성을 만들고 호스트를 관련 서버 ip로 설정하고 포트를 8000으로 설정합니다.

Java 8 및 Tomcat 9에서 발생한 문제: Tomcat 9에서 Java 원격 디버깅(JPDA)이 작동하지 않습니다.

이는 @DAB의 경고와 유사하며, 그의 솔루션이 더 안전할 가능성이 높습니다.

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"

언급URL : https://stackoverflow.com/questions/3835612/remote-debugging-tomcat-with-eclipse

반응형