이 섹션에서는 Java 원격 디버깅을 시도하고 시작할 간단한 것들을 기록하십시오. 기록이더라도!
간단한 프로그램을 작성하여 항아리에 입력하여 원격 서버에 던져 실행하여 원격 서버가 실행중인 것을 시뮬레이션하십시오. Java Calling Shell Script Submission 작업 프로그램을 예로 들어 보겠습니다. 소스 코드는 다음과 같습니다 (다음 프로그램은 간단한 예제 코드입니다. 코드 사양에 신경 쓰지 마십시오).
import java.io.inputStream; public class javashell {public static void main (String [] args)은 예외 {try {String grant = "chmod u+x 제출 -job.sh"; 런타임 런타임 = runtime.getRuntime (); 프로세스 grantproc = runtime.exec (grant); int resultcode = grantproc.waitfor (); System.out.println (resultCode); grantproc = runtime.exec ( "./ upply-job.sh"); resultCode = grantproc.waitfor (); System.out.println (resultCode); inputStream in = gantproc.getInputStream (); 바이트 [] 버퍼 = 새로운 바이트 [1024]; int 코드; while (code = in.read (buffer, 0, buffer.length))! = -1) {system.out.print (new String (buffer, 0, code)); } / ** * Dead 루프는 연결되기 전에 디버거가 종료되는 것을 방지합니다 (매개 변수 기능 테스트) * / system.out.println ( "쉘 스크립트가 실행되고 시간이 정한 인쇄 작업이 시작됩니다!"); int i = 0; while (true) {thread.sleep (2000); System.out.println ( "이것은"th " + (++ i) +"second loop! ");}} catch (예외 e) {system.out.println ("this a decption입니다! ");} 마침내 {}}}원격 서버에 커밋 한 후 다음을 실행하십시오.
코드를 다음과 같이 복사하십시오.
프로그램이 차단되고 디버거가 연결 될 때까지 기다립니다. 현재 원격 디버깅에 Eclipse를 사용할 수 있습니다.
디버거를 클릭하여 실행할 소스 코드를 연결하고 추적합니다.
원격 프로그램이 디버거 실행을 추적하고 있음을 증명하는 원격으로 출력이 있습니다.
이 시점에서 우리는 디버깅 프로세스를 완료합니다. 다음으로 매개 변수가 중단 된 경우를 시도하십시오 = n :
코드를 다음과 같이 복사하십시오.
이 시점에서 원격 프로그램이 디버거 디버거 연결을 차단하고 기다리지 않지만 프로그램은 정상적으로 실행됩니다.
현재 원격 디버깅에 Eclipse의 원격 디버거를 사용할 수 있지만, 로컬 중단 점은 실행되지 않은 원격 코드 또는 실행중인 코드에서만 적용될 수 있습니다. 예를 들어, 우리는 Dead Loop에서 포인트를 깨뜨릴 수 있습니다 (Dead Loop은 항상 실행되는 코드) :
그런 다음 디버거를 시작하십시오.
중단 점에 머무르십시오. 그런 다음 브레이크 포인트 위치를 따라 디버그 작업을 계속하십시오. 이 시점에서, 당신은 SUPNEND 매개 변수의 역할을 알아야합니다.
JVM 디버그 매개 변수에는 "SUSTEND"라는 매개 변수가 있는데, 여기에는 "y"또는 "n"의 두 값이 있습니다.
처음에 디버그하려면 매개 변수를 "Spelend = y"로 설정하여 Eclipse가 Java 응용 프로그램에 원격으로 연결되도록하십시오.
먼저 프로젝트를 실행 한 다음 Eclipse를 연결하려면 매개 변수를 "Spelend = N"으로 설정하여 Java 응용 프로그램이 정상적으로 실행되도록하면 Eclipse가 원격 연결을 시작할 수 있습니다.
더 많은 매개 변수 세부 사항 :
-xdebug 디버깅 활성화.
-xnoagent default sun.tools.debug debugger를 비활성화합니다.
-djava.compiler = 없음 JIT 컴파일러의로드를 금지합니다.
-XRUNJDWP JDWP의 JPDA 참조 실행 예제.
전송은 VMS에서 사용하는 디버거와 프로세스간에 의사 소통하는 데 사용됩니다.
DT_Socket 소켓 전송.
DT_SHMEM 공유 메모리 전송, Windows 전용.
Server = y/n VM을 디버깅 서버로 실행 해야하는지 여부.
주소 = 3999 디버그 서버의 포트 번호, 클라이언트가 서버에 연결하는 데 사용하는 포트 번호.
Debug 클라이언트가 연결을 설정 한 후 VM을 시작할지 여부가 SPERNEND = Y/N.
일식 디버그 바로 가기 키 :
F5 단계로 들어갑니다
f6 단계 끝
F7 스텝 아웃
F8은 다음 중단 점으로 계속됩니다
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.