IntelliJ용 Cloud Code에서 Cloud Debugger 사용

Cloud Debugger는 클라우드에서 실행되는 라이브 애플리케이션을 중지하거나 속도를 늦추지 않고 이러한 앱의 호출 스택 및 로컬 변수를 캡처하고 검사할 수 있습니다. Debugger는 App Engine, Compute Engine, GKE, Cloud Run을 포함한 Google Cloud 제품을 지원합니다.

Debugger는 IDE의 표준 디버거와 상당히 비슷하게 작동하며 동일한 사용자 인터페이스를 제공하지만, 다음과 같은 중요한 차이가 있습니다.

  • Debugger는 실행 중인 애플리케이션의 실행을 일시중지하지 않습니다.
  • Debugger에서는 애플리케이션을 단계별로 실행할 수 없습니다.

Debugger가 지원하는 플랫폼에 대한 자세한 내용은 Debugger 설정을 참조하세요.

요구사항

Debugger를 실행하려면 다음이 필요합니다.

디버거 사용

Debugger를 사용하려면 다음 안내를 따르세요.

  1. IntelliJ 내에서 프로젝트를 엽니다.
  2. 실행 > 구성 편집을 클릭합니다.
  3. 왼쪽 상단에서 + Add New Configuration(새 구성 추가)를 클릭한 후 드롭다운 목록에서 Google Cloud Debugger를 선택합니다.
  4. Name(이름) 필드에 구성의 이름을 입력합니다.
  5. Project(프로젝트) 필드에서 프로젝트가 선택되었는지 확인합니다.
  6. OK(확인)를 클릭합니다.
  7. 디버거를 시작하려면 툴바에서 디버그 아이콘 Debug(디버그)를 클릭합니다.
  8. Attach to an Application(애플리케이션에 연결) 대화상자에서 디버그하려는 백엔드 모듈을 선택한 후 Attach(연결)를 클릭합니다.

스냅샷 위치 설정

스냅샷은 소스 코드의 지정한 위치에서 로컬 변수와 호출 스택을 캡처합니다. 스냅샷 위치는 애플리케이션에서 실행 중인 모든 인스턴스에 적용됩니다.

스냅샷 위치를 설정하려면 다음 안내를 따르세요.

  1. Debugger를 실행 중인 애플리케이션에 연결한 후 감시하려는 소스 코드가 포함된 파일로 이동합니다.
  2. 일반 IDEA 디버거를 사용하여 로컬 애플리케이션의 줄 중단점을 설정할 때와 마찬가지로 왼쪽 여백 영역에서 스냅샷을 생성할 실행 가능한 줄을 클릭합니다.
  3. Set Breakpoint(중단점 설정) 대화상자가 나타나면 Cloud Snapshot Location(Cloud 스냅샷 위치)을 선택합니다. 여백에 파란색 원이 나타나 스냅샷 위치를 표시하고, Debugger 스냅샷 창에는 대기 중인 스냅샷이 표시됩니다.
  4. 스냅샷 위치를 사용 중지하려면 파란색 원을 마우스 오른쪽 버튼으로 클릭하고 Enabled(사용 설정됨) 체크박스를 선택 해제합니다.
  5. 스냅샷 위치를 삭제하려면 파란색 원을 클릭합니다.
스냅샷 위치 설정

스냅샷 생성

설정한 스냅샷 위치에서 어떤 인스턴스든 처음으로 코드를 실행하면 디버거가 스냅샷을 생성하여 사용자가 볼 수 있게 제공합니다. 그러면 사용자가 스냅샷을 검사하고 해당 데이터를 사용하여 애플리케이션을 디버깅할 수 있습니다.

Debugger Snapshots(Debugger 스냅샷) 창에서 스냅샷의 라벨이 Pending(대기 중)에서 Debugger가 스냅샷을 캡처한 시간으로 변경됩니다.

고급 개념

스냅샷 조건 설정

스냅샷 조건은 이 값이 true일 때만 스냅샷을 생성하도록 디버거에 지시하는 부울 식입니다. 예를 들면 x !=0입니다. 조건은 논리 및 숫자 연산자(예: score < 0 || score > 500)를 포함할 수 있는 완전한 부울 표현식입니다.

스냅샷 조건을 설정하려면 다음 안내를 따르세요.

  1. 여백에서 Cloud 스냅샷 위치(파란색 원)를 마우스 오른쪽 버튼으로 클릭합니다.
  2. Condition(조건) 필드에 조건을 입력합니다.

표현식 확인

일부 경우에는 문제 디버깅에 필요한 정보가 애플리케이션의 로컬 변수 및 필드에 명확하게 드러나지 않을 수 있습니다. 특히 App Engine에서 실행할 때 보안 관리자는 java.util.Hashmap와 같은 시스템 클래스의 비공개 멤버에 너무 깊이 들어가지 못하게 합니다. 이러한 경우 조사식이 추가 정보를 노출하는 효과적인 임시 로컬 변수 역할을 합니다. 조사식은 스냅샷을 만들 때 복잡한 표현식을 평가하고 객체 계층 구조를 순회할 수 있습니다.

스냅샷 위치를 설정한 후에 조사식을 지정할 수 있습니다. 조사식은 스냅샷 조건 설정 섹션에 설명된 스냅샷 조건과 동일한 언어 기능을 지원합니다.

지원 받기

IntelliJ IDE에서 의견을 제출하거나 문제를 신고하려면 도구 > Cloud Code > 도움말 / 정보 > 의견 제출 또는 문제 신고로 이동하여 GitHub에 문제를 신고하거나 Stack Overflow에서 질문합니다.

Google Cloud Slack 커뮤니티에 속한 #cloud-code 채널에도 가입할 수 있습니다.