Eclipse를 사용하여 Java Service Fabric 애플리케이션 디버그

  1. 서비스 패브릭 개발 환경 설정의 단계를 따라 로컬 개발 클러스터를 시작합니다.

  2. 디버그하려는 서비스의 entryPoint.sh를 원격 디버그 매개 변수를 사용하여 Java 프로세스를 시작하도록 업데이트합니다. 이 파일은 ApplicationName\ServiceNamePkg\Code\entrypoint.sh 위치에서 찾을 수 있습니다. 이 예제에서 포트 8001은 디버깅을 위해 설정되었습니다.

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -jar myapp.jar
    
  3. 인스턴스 수 또는 디버그하는 서비스의 복제본 수를 1로 설정하여 애플리케이션 매니페스트를 업데이트합니다. 이 설정은 디버깅에 사용되는 포트에 대한 충돌을 방지합니다. 예를 들어, 상태 비저장 서비스의 경우 InstanceCount="1"을 설정하고 상태 저장 서비스의 경우 TargetReplicaSetSize="1" MinReplicaSetSize="1"과 같이 대상과 최소 복제본 세트 크기를 1로 설정합니다.

  4. 애플리케이션을 배포합니다.

  5. Eclipse IDE에서 실행 -> 구성 디버그 ->원격 Java 애플리케이션 및 입력 연결 속성을 선택하고 속성을 다음과 같이 설정합니다.

    Host: ipaddress
    Port: 8001
    
  6. 원하는 지점에 중단점을 설정하고 애플리케이션을 디버깅합니다.

애플리케이션이 크래시하는 경우 coredump를 사용하도록 설정하는 것이 좋습니다. 셸에서 ulimit -c를 실행했을 때 0이 반환될 경우 coredump가 사용하지 않도록 설정된 것입니다. 무제한 coredump를 사용하도록 설정하려면 ulimit -c unlimited 명령을 실행합니다. 또한 ulimit -a 명령을 사용하여 상태를 확인할 수도 있습니다. coredump 생성 경로를 업데이트하려면 echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern을 실행합니다.

다음 단계