AI VIDEO BRIEFING
VS Code 파이썬 디버깅 실전: launch.json 설정부터 중단점·변수·호출 스택 활용까지
VS Code 공식 채널이 FastAPI 앱에 숨어 있던 실제 버그를 디버거로 추적한다. launch.json 설정과 중단점, 변수·감시식·호출 스택 패널, 단계 실행 명령의 차이를 실전 흐름 그대로 정리했다.

핵심 메시지
쉽게 이해하기
영상은 게임 목록을 관리하는 작은 API에서 시작한다. 상태를 '진행 중'으로 바꾸는 요청을 보내면 응답에는 바뀐 값이 보이는데, 다시 목록을 조회하거나 개별 항목을 조회하면 여전히 '완료' 상태로 남아 있다. 응답만 보면 정상이지만 저장은 되지 않는, 로그만으로는 원인을 알기 어려운 유형의 버그다.
파이썬 디버깅에는 마이크로소프트의 파이썬 확장이 필요하며, 이를 설치하면 디버거 확장도 함께 설치된다. 발표자는 린팅과 정적 타입 검사 도구도 함께 쓰고 있다고 밝히면서, 그런 도구는 실행 전에 문제를 걸러 줄 뿐 실행 시점의 동작을 보여 주지는 않는다고 선을 긋는다.
이 API는 서버로 실행되어야 하므로 .vscode/launch.json에 설정을 만들어 둔다. 디버거 종류를 지정하고, request를 launch로 두어 VS Code가 앱을 디버거 아래에서 직접 띄우게 한다. 이미 돌고 있는 프로세스에 붙이고 싶다면 attach 설정을 쓴다. 실행할 모듈과 인자로 서버와 앱 위치를 지정하고, 출력은 통합 터미널로 보내며, 내 코드만 대상으로 하는 옵션을 켜서 단계 실행이 프레임워크 내부로 끌려 들어가지 않게 한다.
업데이트를 호출하는 줄에 중단점을 걸고 요청을 보내면 그 줄에서 실행이 멈춘다. 변수 패널에서 들어온 요청 본문과 갱신할 값이 모두 의도한 대로임을 확인하고, 감시식에 원하는 변수를 추가해 값이 언제 채워지는지 추적한다. 호출 스택은 각 프레임이 코드의 스냅숏이라는 점에서, 어디서 출발해 지금 어디에 와 있는지를 보여 준다.
한 단계씩 실행하며 값을 좇다 보면 이상한 지점이 드러난다. 갱신 대상 항목 자체의 상태는 '진행 중'으로 바뀌는데, 그것을 담고 있는 전체 목록에서는 여전히 '완료'다. 원인은 딕셔너리 언패킹으로 기존 값과 새 값을 합친 새 딕셔너리를 만들어 지역 변수에만 다시 묶은 것이었다. 저장소 안의 원본 항목은 손대지 않았으므로 변경이 사라진다. 새로 만들지 않고 원본 항목을 갱신하도록 고친 뒤 같은 절차를 다시 밟아, 목록에서도 값이 바뀌는 것을 확인한다.
주요 인사이트
- 이 버그는 파이썬에서 아주 흔한 함정이다. 언패킹으로 만든 새 딕셔너리를 같은 이름의 지역 변수에 대입하면 코드는 자연스러워 보이지만, 컬렉션 안에 들어 있는 원래 객체는 전혀 바뀌지 않는다.
- 중단점을 어디에 걸어야 할지 모를 때는 문제가 일어나는 기능을 호출하는 지점에 먼저 걸고, 값이 어긋나기 시작하는 순간까지 한 단계씩 좁혀 들어가는 방식이 효과적이다.
- 감시식에 아직 값이 없는 변수를 넣으면 오류로 표시되지만, 실행이 진행되며 값이 채워지는 과정을 그대로 관찰할 수 있어 오히려 흐름을 파악하는 데 도움이 된다.
- 발표자는 문제 구간을 선택해 AI에게 이 딕셔너리를 제대로 갱신하고 있는지 물어 설명을 확인했다. 디버거로 이상 지점을 좁힌 뒤 원인 해석에 AI를 쓰는 순서가 핵심이다.
자주 묻는 질문
launch.json의 launch와 attach는 어떻게 다른가요?
launch는 VS Code가 애플리케이션을 디버거 아래에서 직접 실행하는 방식이고, attach는 이미 실행 중인 프로세스에 디버거를 연결하는 방식입니다.
'내 코드만' 옵션은 왜 켜나요?
단계 실행이 설치된 프레임워크나 라이브러리 내부로 들어가지 않고 직접 작성한 애플리케이션 코드에 머물게 해 주기 때문입니다.
한 단계씩 실행하는 명령들은 각각 무엇을 하나요?
계속은 다음 중단점이나 종료까지 재개하고, 한 단계씩 코드 실행은 현재 줄을 실행한 뒤 같은 함수의 다음 줄에서 멈추며, 단위 코드 안으로는 현재 줄이 호출하는 함수 안으로 들어가고, 나가기는 현재 함수를 끝내고 호출한 곳으로 돌아옵니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗