Eclipse로 Tomcat 원격 디버깅


95

Eclipse를 통해 Tomcat 애플리케이션을 디버깅 할 수없는 것 같습니다. 나는 설정했다

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

그런 다음 실행 bin/catalina.sh하면 출력이 dt_socketon을 듣고 있다는 출력이 표시 됩니다 port 8000. 그러나 8000Eclipse 에서 포트 에 연결하려고 할 때마다 (원격 Java 응용 프로그램 메뉴에 항목을 추가하여) 연결 거부에 대해 불평합니다. 어떤 아이디어?


Eclipse에서 사용되는 원격 구성을 게시 해 주시겠습니까?
Sean

답변:


133

이것이 작동하는지 확인할 수 있습니까?

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

catalina.sh jpda start

4
사실, 당신이 그것을 고쳤습니다. Eclipse는 성공적으로 연결될 때 실제로 아무 말도하지 않으며 두 번째로 다시 연결하면 오류가 발생합니다. 그래서 효과가 있었지만 눈치 채지 못했습니다.
victor

18
이는 윈도우 OS에서 사람들을 위해입니다 :set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n catalina.bat jpda start
리 스가 타 산시로 Kiam

1
suspend = n 옵션의 기능은 무엇입니까?
Trismegistos 2013

2
@Trismegistos. suspendjvm이 디버거를 기다리거나 계속할지 여부를 지정합니다. 이 문서를 참조하십시오 .
Raghuram 2013

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 도구 모음에서 사용할 수있는 디버그 버튼이 있습니다.

여기에 이미지 설명 입력

디버그 구성에서 "Remote Java Application"을 찾아 두 번 클릭하십시오.여기에 이미지 설명 입력

이름 필드에 원하는 이름을 입력하십시오.

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

호스트 이름은 호스트 주소 일뿐입니다. 여기서는 "localhost"이므로 로컬에서 작업하고 있습니다.

마지막 Port 열의 값은 8000이어야합니다. Name 및 Project 텍스트 필드를 제외하고 다른 두 열 Host 및 port는 언급 한 것과 동일한 값을 가지지 않으면 Eclipse 자체로 채워집니다. 자세한 내용은 스크린 샷을 확인하십시오.여기에 이미지 설명 입력

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

이제 Tomcat 서버를 실행하십시오.

여기에 이미지 설명 입력

이제 디버그 도구에서 TomCatDebugConfiguration을 실행하십시오.

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


47

톰캣 bin 디렉토리에서 catalina.bat또는 .sh발견 (일명 {CATALINA_BASE} / 빈), 편집 (거기 경우 작성) :

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 호스트 및 디버그 포트를 지정합니다.


이 작업은 tomcat / bin 디렉토리에있는 setenv.sh에서이 CATALINA_OPTS를 설정해야합니다. 감사.
아 미트 쿠마르

1
내 setenv.bat에서 JAVA_OPTS (tomcat 7)
vikingsteve

안녕하세요 Philip, 도움이되지 않는 몇 가지 메모를 추가했습니다. 사용중인 OS, Tomcat 및 Eclipse 버전은 무엇입니까?
karl

setenv.batbin디렉토리와 같은 라인을 넣어 set JPDA_OPTS= -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n사용, startup.bat바람둥이 시작
Paramvir 싱 Karwal

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 단계 : 그런 다음 Eclipse에서 디버그 구성을 만듭니다.

    1. 구성 이름을 지정하십시오.
    2. 주세요 project name.
    3. 연결 유형을 다음과 같이 지정하십시오. Standard(Socket Attach)
    4. 호스트로 localhost
    5. port as 8000(또는 임의의 포트 번호이지만 다른 위치에서도 동일해야 함).

catalina.bat의 다음 부분에서 CATALINA_OPTS를 찾았습니다. : doStop shift set ACTION = stop set CATALINA_OPTS = goto execCmd : doConfigTest shift set ACTION = configtest set CATALINA_OPTS = goto execCmd where to edit it? catalina.bat의 내용 만 업로드 할 수 있습니까?
Gopakumar NG

같은 것을 두 번 쓰고있는 것 같습니다. 1 단계를 건너 뛰고 작동합니다. CATALINA_OPTS를 변경할 필요가 없음을 확인할 수 있습니까?
헨리 Aloni

차이점은 CATALINA_OPTS 및 JPDA_OPTS 참조 : stackoverflow.com/questions/11222365/…
Mike R

1
Tomcat 8에서는 작동하지 않습니다. Tomcat 8에서 작동하려면 1 단계를 생략해야합니다.
Dave

@주권. Tomcat 6에서 완전히 작동했습니다. 감사합니다.
T8Z 2015

7

위의 많은 답변이 정확하지만 기본적으로 디버거는 localhost에서만 수신합니다. 원격 서버 를 디버깅하는 경우 수신 할 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를 확인할 수도 있습니다.

netstat -an

Windows와 Linux 모두에서 find(Windows) 또는 grep(Linux)로 포트를 필터링합니다 .


나는 당신이 어떤 PORT 가 어떤 IP가 아니라 실제로 사용되는 것을 의미한다고 생각합니다 .
Abdollah

1
아니요, "IP 주소"를 의미합니다. 원격 디버깅을 수행하는 경우 (다른 시스템에서) localhost 또는 127.0.0.1과 다른 IP 주소를 지정할 수 있어야합니다. 물론 항상 포트 번호가 필요합니다.
DAB

5

그냥 실행 ./catalina.sh jpda start(포크) 또는 ./catalina.sh jpda run(도움말에 언급되지 않은, 포크하지 않습니다). 여기에 언급 된 모든 옵션은 기본적으로 정상 값입니다.


5

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

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 단계 : Eclipse IDE에서 "디버그 구성"으로 이동합니다.

step7 : "remote java application"을 클릭하고 "New"를 클릭합니다.

step8. "연결"탭에서 매개 변수 값을 설정합니다.

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

step9 : 적용 및 디버그를 클릭합니다.

마지막으로 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를위한 것이지만, 저는 우연히도 Windows에 있었기 때문에 도움이되었습니다. 감사!
Ring

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 스크립트를 수정하고 'start'앞의 마지막 줄에 'jpda'매개 변수를 추가하는 것입니다. ´´exec "$ PRGDIR"/ "$ EXECUTABLE "jpda start"$ @ "´´.
Heri

1

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


0

CATALINA_OPTS 및 JPDA_OPTS로 startup.bat를 수정하는 것은 저에게 효과적이지 않았지만 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. jpda를 포함하도록 startup.bat 수정

"% EXECUTABLE %"호출 변경 % CMD_LINE_ARGS % 시작

"% EXECUTABLE %"호출 jpda start % CMD_LINE_ARGS %

그런 다음 Eclipse의 디버그 구성에서 원격 Java 애플리케이션을 구성하십시오.


0

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

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

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

    set 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"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.