6강 구현 중심 ⏱ 약 20분

 

0. 학습 목표

→ 디버그 설정을 launch.json 파일에 저장해, 원하는 방식으로 반복 실행합니다.

더보기

이번 글은 구현 중심 강의이며, 시리즈의 선택 강의입니다.

 

5강까지로도 VSCode에서 코드를 실행하고 디버깅하는 데는 충분합니다.

이번 강의는 디버깅을 "매번 같은 조건으로", "값을 전달하면서" 반복해야 할 때 유용한 도구를 다룹니다.

지금 필요하지 않다면 나중에 그런 상황이 왔을 때 돌아와도 됩니다.

 

5강에서 F5를 누르면 VSCode가 알아서 디버깅을 시작했습니다.

이때 VSCode는 기본 설정으로 실행한 것입니다.

그런데 실제 프로그램은 실행할 때 값을 받거나(명령행 인자), 특정 환경변수가 필요한 경우가 많습니다.

이런 조건을 매번 손으로 맞추는 대신 launch.json이라는 파일에 저장해두고 재사용하는 것이 이번 강의의 주제입니다.

구분 내용
이해할 것 launch.json이 디버그 실행 조건을 저장하는 파일이라는 것
만들 것 실행 인자·환경변수가 지정된 디버그 구성 (.vscode/launch.json)
확인할 것 저장한 구성으로 실행했을 때 인자·환경변수가 코드에 전달되는지

 

1. 왜 실행 설정을 저장하는가

→ 기본 F5 실행으로는 부족한 상황을 확인합니다.

더보기

5강의 debug_practice.py는 점수 목록이 코드 안에 고정되어 있었습니다.

하지만 실제 프로그램은 실행할 때 값을 밖에서 받는 경우가 많습니다.

예를 들어 실행하는 사용자 이름을 인자로 받는 스크립트를 생각해 봅시다. debug_practice.py를 아래처럼 바꿉니다.

import sys
import os

user = sys.argv[1] if len(sys.argv) > 1 else "손님"   # 실행 시 전달된 첫 번째 인자를 받는다
mode = os.environ.get("APP_MODE", "일반")             # 환경변수 APP_MODE를 읽는다

print(f"사용자: {user}, 모드: {mode}")

 

 

이 코드는 실행할 때 사용자 이름을 인자로, 실행 모드를 환경변수로 받습니다. 터미널에서라면 이렇게 실행합니다.

APP_MODE=관리자 python debug_practice.py 홍길동      # 환경변수와 인자를 함께 전달
사용자: 홍길동, 모드: 관리자

 

그런데 5강처럼 그냥 F5를 누르면 인자도 환경변수도 없이 실행되어 사용자: 손님, 모드: 일반이 나옵니다.

디버깅할 때마다 인자와 환경변수를 넣고 싶다면, 그 조건을 어딘가에 저장해 두어야 합니다.

그 저장소가 launch.json입니다.

 

2. launch.json 만들기

→ 디버그 구성 파일을 생성하고, 기본 구조를 확인합니다.

더보기

왼쪽 액티비티 바에서 Run and Debug 아이콘(삼각형에 벌레 모양)을 클릭합니다.

아직 구성이 없으면 "create a launch.json file" 링크가 보입니다.

 

이것을 클릭하고, 디버거 종류를 물으면  Project Python Debugger →  Python File을 선택합니다.

그러면 프로젝트에 .vscode 폴더가 생기고 그 안에 launch.json이 만들어집니다. 사이드바에서 확인할 수 있습니다.

~/Dev/Project/
├── .vscode/
│   └── launch.json          ← ➕ 이번 강의에서 생성 (디버그 설정 저장)
├── .venv/
├── debug_practice.py
└── main.py

(➕ 새로 생성 · ✏️ 수정 · 표시 없음은 변경 없음)

 

 

생성된 launch.json의 기본 내용은 다음과 같습니다. 5강에서 F5가 자동으로 하던 일이 이 파일로 적혀 나온 것입니다.

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python Debugger: Current File",   // 구성 이름 (실행 목록에 표시됨)
      "type": "debugpy",                          // 디버거 종류
      "request": "launch",                        // 실행 방식: 새로 실행
      "program": "${file}",                       // 실행 대상: 현재 열린 파일
      "console": "integratedTerminal"             // 결과를 통합 터미널에 출력
    }
  ]
}

configurations는 실행 구성들의 목록입니다. 지금은 하나뿐이고, "program": "${file}"은 "지금 편집 영역에 열린 파일을 실행하라"는 뜻입니다. 5강에서 F5가 현재 파일을 디버깅했던 것이 바로 이 설정 때문입니다.

 

3. 인자와 환경변수 추가하기

→ 구성에 실행 인자와 환경변수를 지정하고, 저장한 설정으로 실행합니다.

더보기

3.1 구성에 설정 추가하기

 

1번에서 터미널로 전달했던 인자(홍길동)와 환경변수(APP_MODE=관리자)를 launch.json에 적어 넣습니다. console 줄 뒤에 argsenv 두 항목을 추가합니다.

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "관리자 모드로 실행",                    // ✏️ 알아보기 쉬운 이름으로 변경
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "args": ["홍길동"],                            // ➕ 실행 인자 (sys.argv[1]로 전달됨)
      "env": { "APP_MODE": "관리자" }                // ➕ 환경변수 (os.environ으로 읽힘)
    }
  ]
}

args는 실행할 때 코드에 전달할 인자 목록으로, 1번의 sys.argv[1]로 들어갑니다. env는 실행 중 사용할 환경변수로, os.environ.get("APP_MODE")로 읽힙니다. 터미널에서 손으로 붙이던 조건을 파일에 적어 고정한 것입니다. 파일을 저장(Ctrl+S)합니다.

 

 

 

 

3.2 저장한 구성으로 실행하기

 

debug_practice.py를 편집 영역에 열어둔 상태에서 F5를 누릅니다.

이번에는 방금 저장한 "관리자 모드로 실행" 구성이 사용됩니다. 통합 터미널에 다음이 출력됩니다.

사용자: 홍길동, 모드: 관리자      ← launch.json의 args·env가 그대로 전달됨

 

 

1번에서 터미널에 길게 입력했던 조건이, 이제 F5 한 번으로 재현됩니다.

Run and Debug 화면 위쪽의 드롭다운에서 구성 이름("관리자 모드로 실행")을 확인할 수 있고, 구성을 여러 개 만들어 두면 상황에 따라 골라 실행할 수도 있습니다.

 

디버깅이므로 5강에서 배운 것이 그대로 됩니다. 중단점을 찍어두면 이 구성으로 실행해도 그 지점에서 멈추고, 그때 user·mode 변수에 전달된 값이 들어 있는 것을 변수 패널에서 확인할 수 있습니다. launch.json은 "어떤 조건으로 디버그를 시작할지"를 정할 뿐, 멈추고 값을 보는 디버깅 자체는 5강 그대로입니다.

- launch.json = 디버그 실행 조건을 저장하는 파일 (.vscode 폴더 안)
- F5의 기본 동작도 사실 이 파일의 기본 구성으로 실행되는 것
- args = 실행 인자(sys.argv), env = 환경변수(os.environ)를 고정
- 저장해 두면 F5 한 번으로 같은 조건을 반복 실행 — 구성을 여러 개 둘 수도 있다

✔ 확인 기준: F5로 실행했을 때 통합 터미널에 사용자: 홍길동, 모드: 관리자가 출력되면 이번 강의 완료입니다. 손님·일반이 나오면 launch.jsonargs·env가 제대로 저장됐는지, 파일을 저장(Ctrl+S)했는지 확인하세요. JSON은 쉼표·따옴표에 민감하므로, 편집 영역에 표시되는 오류 밑줄이 없는지도 확인합니다.

 

이것으로 VSCode 시리즈가 마무리됩니다.

편집기 설치(2·3강)부터 가상환경 연결과 실행(4강), 디버깅(5·6강)까지

지난 시리즈에서 터미널로 하던 Python 개발을 이제 VSCode 안에서 온전히 할 수 있게 되었습니다.

 

두 시리즈를 통해 가상환경으로 환경을 관리하고, VSCode로 편하게 개발하고 디버깅하는 기본기가 갖춰진 것입니다.

여기서 배운 도구들은 앞으로 어떤 Python 프로젝트를 하더라도 그대로 쓰이는 토대가 됩니다.