효과적인 디버깅과 코드 품질은 소프트웨어 개발에서 분리할 수 없는 개념입니다. Visual Studio(VS) Code의 디버깅 기능은 주로 launch.json 파일에 의해 제어됩니다. 이 파일을 통해 개발자는 자신의 비전에 따라 디버깅 설정을 구성하고 관리할 수 있습니다.
이 문서에서는 최적의 디버깅을 위해 launch.json 파일을 열고 관리하는 과정을 안내합니다.
Visual Studio Code에서 launch.json 열기
VS Code 디버깅 설정을 구성하고 관리하려면 launch.json 파일에 대한 액세스 권한이 필요합니다. 이 파일은 디버그 사용자 지정에서 중요한 역할을 합니다.
- Visual Studio Code를 엽니다.
- Ctrl + Shift + P를 눌러 명령 팔레트를 엽니다.
- 명령 팔레트에 'Open launch.json'을 입력하고 'Enter'를 누릅니다. 그러면 launch.json 파일이 열립니다.
- launch.json 파일이 열리지 않으면 프로젝트의 루트 폴더에 '.vscode' 폴더가 있는지 확인합니다.
- 존재하지 않는 경우 사용자 폴더 내에 '.vscode'라는 새 폴더를 만듭니다.
- 새 'launch.json' 파일을 만들어 이 폴더에 넣습니다.
launch.json 파일을 활성화하면 구성할 준비가 됩니다.
Launch.json 구조 개요
launch.json은 '버전' 및 '구성' 섹션을 표시합니다. '구성' 섹션은 디버깅 체계를 구성하는 데 사용할 다양한 디버깅 옵션을 포함하는 배열입니다.
Google 시트의 범례에 레이블을 추가하는 방법
'구성' 배열의 각 개체는 디버깅 시나리오를 나타냅니다. 이러한 개체에는 언어, 프로그램 및 디버거 설정과 같은 디버깅 환경을 정의하는 속성이 있습니다.
launch.json 구성에서 볼 수 있는 몇 가지 일반적인 속성은 다음과 같습니다.
- '이름' – 드롭다운 메뉴에서 구성을 식별하기 위한 독자 친화적인 구성 이름입니다.
- 'type' – 디버거 유형(예: 'node', 'python' 또는 'cppvsdbg')을 지정합니다.
- 'request' – 요청 유형을 'launch'(새 인스턴스 시작) 또는 'attach'(디버거를 기존 프로세스에 연결)로 결정합니다.
- '프로그램' – 디버깅하려는 파일의 파일 경로입니다.
- 'args' – 디버깅하는 동안 프로그램에 전달할 명령줄 인수의 배열입니다.
- 'preLaunchTask' – 디버거를 시작하기 전에 실행할 작업입니다.
launch.json 파일 구조를 이해하면 디버깅 환경을 사용자 지정하는 동안 변경할 옵션과 그대로 두어야 할 옵션을 알 수 있습니다.
다른 언어에 대한 시작 설정 구성
시작 설정을 구성하는 단계는 언어에 따라 약간 다를 수 있습니다. 다음은 널리 사용되는 여러 언어에 대한 단계입니다.
자바스크립트와 타입스크립트
- 새 launch.json 파일을 만들고 JavaScript의 경우 'node' 또는 TypeScript의 경우 'pwa-node'로 'type' 속성을 구성합니다.
- 'request' 속성을 'launch' 또는 'attach'로 설정합니다.
- '프로그램' 속성을 사용하여 진입점 파일을 지정해야 합니다.
파이썬
- Visual Studio Code용 Python 인터프리터 및 확장을 설치합니다.
- 새 launch.json 파일에서 'type' 속성을 'python'으로 설정합니다.
- 'request' 속성을 'launch' 또는 'attach'로 구성합니다.
- '프로그램' 속성을 사용하여 실행할 Python 파일을 지정합니다.
- 기본 위치에 있지 않은 경우 Python 인터프리터의 경로에 'pythonPath' 속성을 추가로 설정해야 할 수 있습니다.
C# 및 .NET 코어
- Visual Studio Code용 C# 확장을 설치합니다.
- 새 launch.json 파일에서 'type' 속성을 .NET Core의 경우 'coreclr'로, .NET Framework의 경우 'clr'로 설정합니다.
- 'request' 속성을 'launch' 또는 'attach'로 구성합니다.
- '프로그램' 속성을 사용하여 진입점 파일을 지정합니다.
- 필요한 경우 'cwd' 속성을 현재 프로젝트의 작업 디렉토리로 설정합니다.
자바
- Java 확장 팩을 설치합니다.
- 새 launch.json 파일을 만들고 'type' 속성을 'java'로 설정합니다.
- 'request' 속성을 'launch' 또는 'attach'로 구성합니다.
- 'mainClass' 속성으로 메인 클래스를 지정합니다.
- 'projectName' 속성을 Java 프로젝트의 이름으로 설정합니다.
- Java 개발 중에 사용할 Java 라이브러리를 포함하도록 'classpath' 속성을 구성합니다.
구성 레시피 디버깅
다음 섹션에서는 다양한 디버깅 구성 레시피를 다룹니다.
실행 중인 프로세스에 디버거 연결
실행 중인 프로세스에 디버거를 연결하려면:
- '요청' 속성을 '첨부'로 설정합니다.
- 프로세스 ID 또는 필터를 선택하여 디버깅할 프로세스를 찾습니다.
원격 애플리케이션 디버깅
원격 애플리케이션 디버깅의 경우:
- '원격' 유형을 사용하십시오.
- 호스트의 주소, 포트 및 가능하면 인증 정보를 제공하여 연결을 설정합니다.
단위 테스트 및 테스트 스위트 디버깅
단위 테스트 및 테스트 스위트를 디버깅할 때:
- 테스트 프레임워크 및 설정을 포함하는 구성을 사용하여 단위 테스트 및 테스트 스위트를 디버그하십시오.
- 특정 테스트를 대상으로 하기 위해 '프로그램' 또는 '인수' 속성에서 테스트 스위트 또는 개별 테스트 파일을 정의합니다.
환경 변수 전달
launch.json의 'env' 속성은 디버깅하는 동안 애플리케이션에 환경 변수를 전달할 수 있습니다. 이 속성은 설정하려는 환경 변수에 대한 키-값 쌍을 포함하는 개체입니다.
고급 디버깅
디버그 파일에서 좀 더 강력한 기능을 사용하려는 사용자를 위한 몇 가지 고급 디버깅 기술을 살펴보겠습니다.
조건부 중단점 및 로그 지점
조건부 중단점 및 로그 지점은 특정 조건에서만 메시지를 일시 중지하거나 로깅하여 디버깅을 개선합니다. 사용하려면:
- 중단점 또는 로그점을 설정하려는 줄 번호를 마우스 오른쪽 버튼으로 클릭합니다.
- '조건부 중단점 추가' 또는 '로그 지점 추가'를 선택합니다.
- 작업을 트리거할 조건 또는 메시지를 입력합니다.
소스 맵
소스 맵을 사용하면 변환되거나 축소된 코드를 디버그할 수 있습니다.
- 소스 맵을 사용하려면 launch.json 구성에서 'sourceMap' 속성을 'true'로 설정합니다.
- 빌드 프로세스가 소스 맵과 변환된 코드를 생성하는지 확인하십시오.
외부 디버거 통합
원하는 경우 gdb 또는 lldb와 같은 외부 디버거 및 도구를 VS Code에 통합할 수 있습니다.
- 선택한 디버거 확장을 설치합니다.
- launch.json 파일에서 디버거 설정을 구성합니다.
다중 스레드 응용 프로그램 디버깅
다중 스레드 응용 프로그램을 디버깅할 때 개별 스레드의 실행을 제어할 수 있습니다.
- 디버깅 세션 중에 스레드를 관리하려면 디버그 사이드바의 '스레드' 보기를 사용하십시오.
- 각 스레드에 대한 코드 실행을 개별적으로 일시 중지, 재개 또는 단계별로 실행할 수 있습니다.
다중 대상 디버깅
복합 시작 구성을 사용하면 여러 대상을 동시에 디버깅할 수 있습니다. 이 기능을 활용하려면 함께 그룹화할 구성 이름이 있는 'compounds' 어레이를 추가하십시오. 디버그 드롭다운 메뉴에서 복합 구성 이름을 선택하여 실행합니다.
다양한 서비스, 기능 또는 엔드포인트를 대상으로 하는 다중 시작 구성을 구성하여 마이크로서비스 및 서버리스 애플리케이션을 디버깅합니다. 이러한 대상을 함께 실행하려면 복합 실행 구성을 사용하십시오.
다중 루트 작업 영역의 경우 각 폴더에 대해 별도의 launch.json 파일을 만듭니다. 화합물을 사용하여 개별적으로 또는 동시에 프로젝트를 디버깅하려면 각 루트 폴더에 대한 실행 설정을 개별적으로 구성하십시오.
일반적인 launch.json 문제 해결
때때로 디버깅은 자체 버그 세트에 취약합니다. 몇 가지 일반적인 문제와 해결 방법을 살펴보겠습니다.
스키마 유효성 검사 오류
launch.json 파일에 잘못된 속성 또는 값이 있는 경우 스키마 유효성 검사 오류가 발생합니다. 스키마 오류를 수정하려면:
- 문제점 패널에서 오류 메시지를 검토하십시오.
- 오류 메시지의 정보에 따라 launch.json 파일을 업데이트합니다.
디버깅 실패
잘못된 실행 설정으로 인해 디버깅 오류가 발생할 수 있습니다.
- 잘못된 파일 경로에 대한 실행 구성을 확인하십시오.
- 누락되거나 잘못된 디버거 또는 요청 유형을 확인합니다.
- 필요에 따라 설정을 업데이트합니다.
시작 구성 문제 진단
시작 구성 문제를 진단하려면 다음을 수행하십시오.
- 'trace' 속성을 'verbose'로 설정하여 진단 로깅을 활성화합니다.
- 디버그 콘솔에서 생성된 로그를 검토하여 문제를 식별하고 수정합니다.
launch.json에 대한 팁
다음 팁과 함께 launch.json을 최적으로 사용하십시오.
- 시작 구성에 의미 있는 이름을 사용하여 쉽게 식별할 수 있도록 합니다. 이 방법은 여러 디버깅 시나리오로 작업할 때 적절한 구성을 빠르게 찾는 데 도움이 됩니다.
- 프로젝트의 버전 제어 시스템에 launch.json 파일을 포함하여 팀과 시작 구성을 공유합니다. 모든 팀원은 동일한 디버깅 구성 및 설정에 액세스할 수 있습니다.
- Git과 같은 버전 제어 시스템은 launch.json 파일의 변경 사항을 추적할 수 있습니다. 버전 제어를 사용하여 이전 구성으로 되돌리고 권장 설정을 공유하여 다른 팀 구성원과 공동 작업할 수 있습니다.
- 프로젝트 요구 사항에 맞는 특정 언어, 디버거 또는 도구를 지원하는 확장 프로그램을 설치합니다. 디버깅 세션 중에 이러한 확장 및 해당 기능을 사용하도록 launch.json 파일을 구성합니다.
디버깅 시작
launch.json의 기능을 활용하여 코딩 스타일에 가장 잘 맞도록 디버깅 환경을 조정할 수 있습니다. 이렇게 하면 코드의 품질과 성능이 향상됩니다.
시작 설정을 얼마나 자주 구성해야 합니까? 구성 팁이 있습니까? 아래 의견 섹션에서 경험을 공유하십시오.