이글루 냠냠

namelessja.egloos.com

포토로그



[java][eclipse] tomcat 원격 디버깅 Java

로컬 PC에서 원격지에 있는서버로 붙어서 Tomcat 개발 내용을 테스트할 때 유용한 방법.
내 PC가 아닌 실제 개발내용을 적용해서 바로 디버깅할 수 있도록 제공하는 유용한 방법이다.

Apache Tomcat의 경우에는 JPDA를 사용해서 원격지에서 디버깅할 수 있는 환경을 제공한다.
개발 툴은 Eclipse(STS3.2), Tomcat은 7.56에서 dt_socket으로 디버깅하는 방법을 사용하였다.

[작업순서]
1. 원격 서버
    1-1. 환경변수 JPDA_TRANSPORT를 dt_socket으로 등록한다.
    #> export JPDA_TRANSPORT=dt_socket
    1-2. 원격지 서버의 tomcat을 다음 옵션을 사용하여 기동한다.
    #> ./catalina.sh jpda start
    1-3. 로그에 다음 메시지가 가장 먼저 찍힌다.
    #> Listening for transport dt_socket at address: xxxx

2. 로컬 서버
    Run -> Debug Configurations...에서 다음을 설정한다.   
    2-1. Remote Java Application 항목을 만든다.
    2-2. 디버깅할 프로젝트를 선택한다.
    2-3. 원격지의 IP, Port를 설정한다.

[확인하기 - 원격 서버]
    원격 서버의 catalina 로그를 확인하면, 서버를 부팅할 때 다음 메시지가 나타난다.
Listening for transport dt_socket at address: 8100
    기본으로 사용중인 8000 포트는 다른 용도로 이미 사용중이기 때문에, 8100 포트를 사용하였다.
    만약 다른 포트를 지정하였다면 해당 포트가 표기될 것이다.

[확인하기 - 로컬 PC]
    1. 로컬 PC의 소스에 break point를 만든다.
    2. 원격 서버에 접속해서 break point를 거치는 작업을 한다.
    3. 로컬 서버의 eclipse에서 break point가 걸린 부분에서 디버깅이 시작되는걸 확인한다.

[기타]
    1. jpda의 기본 port는 8000이며, 환경변수(JPDA_ADDRESS) 항목을 설정해서 바꿀 수 있다.
        ex) JPDA_ADDRESS=8100
    2. 다음과 같은 에러가 로그에 찍힐 때
ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
Error occurred during initialization of VM
agent library failed to init: jdwp
        jpda 설정이 2번 이상 되어있으니, 삭제하고 다시 할 것.
        보통 tomcat에는 기본적으로 사용할 수 있도록 설정되어 있으니 추가적인 설정을 했으면 그것부터 지우자.

덧글

댓글 입력 영역