VS Code용 Cloud Code를 사용하면 skaffold debug
를 활용하여 Cloud Run에 배포된 애플리케이션을 쉽게 디버깅할 수 있습니다. Skaffold 디버깅에 대한 자세한 내용은 Skaffold를 사용하여 디버깅을 참조하세요.
포트 전달 설정 또는 언어별 디버그 인수 삽입과 같은 수동 설정을 완료할 필요가 없습니다. 디버깅을 위해서는 skaffold.yaml
구성 파일과 cloudcode.cloudrun
유형의 launch.json
파일이 포함된 Cloud Code에 사용 가능한 Cloud Run 애플리케이션이 필요합니다.
Cloud Run 서비스 디버깅
서비스를 디버그하려면 다음 단계를 따르세요.
서비스를 실행하고 디버거 세션을 연결하려면 명령어 팔레트를 연 다음(
Ctrl
/Cmd
+Shift
+P
키를 누르거나 뷰 > 명령어 팔레트 클릭) Cloud Run 에뮬레이터에서 디버그 명령어를 실행합니다.Cloud Run 에뮬레이터의 실행/디버그 대화상자에서 구성의 사양을 설정합니다.
- Docker 또는 Buildpacks를 빌더로 선택한 다음Dockerfile 또는 Buildpack을 지정합니다.
- (선택사항) Dockerfile 대상 또는 빌드 인수를 지정하려면 고급 빌드 설정 표시를 클릭한 후 대상 또는 인수를 지정합니다.
- (선택사항) 커스텀 서비스 이름, 컨테이너 이미지 URL, 컨테이너 포트, 사용할 서비스 ID, 전용 CPU 수 또는 각 컨테이너 인스턴스에 할당할 메모리 양을 지정하려면 고급 서비스 설정 표시를 클릭한 다음 값을 지정합니다.
- (선택사항) 환경 변수를 지정하려면 고급 서비스 설정 표시를 클릭하고 환경 변수를 클릭한 다음 값을 지정합니다.
- (선택사항) Cloud SQL 연결을 지정하려면 연결을 클릭한 후 연결을 한 줄에 하나씩 지정합니다.
- (선택사항) VS Code가 코드 변경사항을 저장한 후 디버깅 세션을 다시 설정하도록 하려면 자동으로 변경사항 빌드 및 변경사항 재실행 체크박스를 선택합니다.
서비스 실행 방법을 추가로 맞춤설정하려면
launch.json
파일을 직접 수정하면 됩니다.서비스 디버깅을 시작하려면 디버그를 클릭합니다.
메시지가 표시되면 로컬에서 애플리케이션을 실행하고 디버깅하도록 사용자 인증 정보를 인증합니다.
서비스의 디버깅 가능한 각 컨테이너에서 디버깅할 프로그램이 있는 원격 컨테이너의 디렉터리를 확인하거나 입력합니다.
또는
ESC
를 눌러 컨테이너 디버깅을 건너뛸 수 있습니다.Cloud Code는 서비스에서 디버깅 가능한 각 컨테이너에 대한 디버그 세션을 연결합니다.
기본적으로 애플리케이션 변경사항을 저장하면 Cloud Code가 애플리케이션을 다시 배포하고 새 디버그 세션을 설정합니다. 프로젝트 실행 구성에서
watch
플래그를 사용하여 이 기능을 켜고 끌 수 있습니다.중단점을 추가하려면 디버깅하려는 파일의 편집기 여백을 클릭합니다.
빨간색으로 채워진 원은 활성 중단점을, 회색의 속이 빈 원은 사용 중지된 중단점을 나타냅니다.
중단점을 더 세밀하게 제어하려면 VS Code의 디버그 뷰에서 중단점 섹션을 사용할 수 있습니다.
서비스에 새 요청을 전송하면 지정한 줄에서 일시중지됩니다.
세션이 완료되면 마우스 오른쪽 버튼을 클릭하여 다음 명령어를 사용합니다.
- 로그 보기: Cloud Code 로그 탐색기를 사용하여 특정 배포의 애플리케이션 로그를 엽니다.
- URL 열기: 웹브라우저에서 특정 서비스의 애플리케이션 서비스 URL을 엽니다.
시작 구성에서 감시 모드를 사용 중지한 상태에서 애플리케이션을 변경하고 애플리케이션을 다시 빌드 및 다시 배포하려면 Cloud Code 상태 표시줄을 클릭한 다음 감시 모드 사용 설정을 클릭합니다.
변수 및 스택 정보를 검사하려는 경우 디버그 사이드바를 사용합니다. 디버깅 세션과 상호작용하려면 하단 창 디버거에 있는 디버그 콘솔을 사용합니다.
배포를 중지하려면 현재 배포의 작업 모음에서 중지 버튼을 클릭합니다.
컨테이너 빌드 문제 해결
BUILD_DOCKER_UNKNOWN
오류 코드가 수신되면 Docker에 문제가 있음을 나타냅니다. 이 문제를 해결하려면 다음 작업을 한 개 이상 수행합니다.
Docker를 다시 시작하고 컨테이너를 다시 빌드해 봅니다.
다시 시작한 후에도 동일한 오류가 발생하는 경우 Docker의 디스크 공간이 부족한 것일 수 있습니다. Docker에서 사용하지 않는 객체를 삭제하는 방법에 대한 자세한 내용은 사용하지 않는 Docker 객체 프루닝을 참조하세요.
Docker의 디스크 사용량 확장 프로그램을 사용하여 공간을 확보합니다.
구성 세부정보
Cloud Code는 다음과 같은 언어별 구성 세부정보를 처리합니다.
Node.js
호출할 진입점 다시 작성:
node --inspect=localhost:9229
Python
Init 컨테이너를 사용하여 ptvsd
모듈을 설치하고 호출할 진입점 다시 작성:
python -m ptvsd --host localhost --port 5678
Go
초기화 컨테이너를 사용하여 dlv
디버거를 설치하고, 시작된 디버그 세션이 헤드리스 모드에서 디버그 서버로만 실행되도록 진입점을 다시 작성하면 시작 시 디버깅된 프로세스가 계속되고, 여러 클라이언트 연결을 수락하고, localhost:56268
에서 수신 대기합니다.
dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --
자바
적절한 JDWP(Java Debug Wire Protocol) 구성과 함께 환경 JAVA_TOOLS_OPTIONS
를 추가하면 JDWP 디버깅 에이전트가 포트 5005에서 소켓 연결을 수신 대기하고 디버거가 연결되기 전에 VM이 실행되도록 허용합니다.
jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y
.NET
.NET Core 애플리케이션은 VS Code용 vsdbg
와 함께 배포되도록 구성됩니다.
자동 구성에 문제가 발생하면 상세한 디버거 구성 및 설정을 참조하여 문제를 해결하세요.