본문 바로가기

Programing/Java

java remote debugger, 자바 원격 디버깅


eclipse를 사용해 자바 원격 디버깅하는 방법에 대해서 설명한다. 
영어에 거부감이 없다면 여기를 참고해도 좋다. 
http://www.eclipsezone.com/eclipse/forums/t53459.html

내 경우에는 원격 서버(linux)에서 돌릴 프로그램이 local에서 돌지 않기 때문에 remote debugging을 진행했다. 
linux에서만 도는 c library를 window에서는 돌릴 수 없기 때문에 ;;;
이런 경우 외에도 로컬이 아닌 원격장비에서만 일어나는 에러를 잡기 위해서 진행해 볼 수도 있다. 


만약 test.java 파일을 컴파일 해서 test.class가 생성되었다면 실행은 아래와 같이 할 것이다. 

서버 (10.8.34.1)
$> java test

거기에 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 옵션을 붙여 주면 된다.

그럼 요렇게 실행하면 되겠지!
서버 (10.8.32.1)
$> java test -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044

여기서 transport=dt_socket은 소켓을 이용해 address=1044 1044번 port를 사용하여 debugging하게 될 것을 알려 준다.
만약 suspend=y로 해놓으면 로컬에서 디버깅하기 위해 연결하기 전까지 jvm이 suspend 모드에서 기다리고 연결되면 진행된다.
거꾸로 suspend=n이라면 로컬에서 debug로 연결되기 전에도 프로그램이 시작 된다.


원격 서버에서 위와 같이 시작을 시켜 놓고 eclipse에서는 아래와 같이 Run -> Debug Configurations로 들어간다. 
왼쪽 창에서 화면에서 Java Application -> Remote Java Application을 선택한다. 


Project 명 
Host 주소
Port 번호 : 아까 옵션에 address=1044로 주었던 1044다.

이렇게 적어주고 Debug를 시작하면 remote에서 실행되는 프로그램에 로컬 eclipse로 debug를 진행할 수 있다.
로컬에서 하듯이 원하는 위치에 break point를 찍고 천천히 debugging 해보시라~~!