개발 도구 & IDE 정리

2026. 7. 8. 00:04기타/포스팅

개발 도구 3종 세트

프로그래밍은 서로 독립적인 세 가지 요소가 합쳐져서 돌아간다.

요소 역할 예시
에디터/IDE 코드를 "쓰는" 도구 VSCode, 이클립스
언어 엔진 코드를 "번역+실행"하는 진짜 프로그램 Python 인터프리터, JDK(JVM)
확장/플러그인 에디터와 언어 엔진을 "연결"해주는 다리 Python Extension, Java Extension Pack

IDE vs 코드 에디터

  순수 에디터 VSCode 전통 IDE (이클립스 등)
기본 기능 문법강조, 자동완성만 문법강조, 자동완성 컴파일, 디버깅, 실행 기본 내장
컴파일/실행 직접 터미널에서 확장 설치 시 가능 처음부터 다 갖춤
  • IDE = 코드 작성 + 컴파일 + 디버깅 + 실행을 한 곳에서 처리하는 종합 도구
  • VSCode는 원래 가벼운 에디터였지만, 확장(Extenstion)으로 IDE 기능까지 갖출 수 있는 하이브리드

VSCode 확장이 실제로 하는 일

VSCode의 "Python 확장" 같은 것은 파이썬 언어 자체를 설치해주는 게 아니다.

확장은 어디까지나 "이미 설치된 언어 엔진을 편하게 연결해주는 다리" 역할만 한다.

 

확장이 실제로 하는 일

  1. 문법 강조 — 코드에 색깔을 입혀줌 (엔진 없이도 가능, 단순 패턴 인식)
  2. 기본 자동완성 — 함수명, 변수명 자동완성 (엔진 없이도 어느 정도 가능)
  3. 언어 엔진과 연결 — 컴퓨터에 이미 설치된 엔진을 찾아서 실행 버튼과 연결 (엔진 필수)
  4. 디버깅 UI 제공 — 중단점, 변수 확인 화면 등 (엔진 필수)

설치 순서: ① 언어 엔진 설치(진짜 엔진) → ② IDE 설치 → ③ IDE에 해당 언어 확장 설치(연결 다리).

①이 없으면 ③을 해도 실행 시 에러가 남.

IDE의 "Run 버튼"이 하는 일

버튼 하나로 실행되는 것처럼 보여도, 내부에서는 아래가 순차적으로 자동 진행된다.

① IDE가 내부적으로 컴파일러 호출 (예: javac)
② 컴파일 성공 시 바로 실행기 호출 (예: java)
  • 이클립스 같은 IDE는 타이핑 도중에도 실시간으로 미리 컴파일해두는 증분 컴파일을 수행해서 체감 속도가 더 빠르게 느껴짐
  • 이 과정에서 실제로 언어 엔진(컴파일러/인터프리터)이 컴퓨터에 설치되어 있어야만 동작함 (자세한 내부 원리는 「언어 실행원리 정리」 문서 참고)

빨간 줄(실시간 오류 표시)의 원리

에디터에 오타를 치면 바로 빨간 줄이 뜨는 이유:

① 타이핑하는 동안
② 확장(Language Server)이 설치된 언어 엔진에게 "이 코드 파싱해줘" 요청
③ 엔진이 문법만 분석 (실행은 안 함, 안전하게 파싱만)
④ 문제 있으면 위치를 알려줌 → 에디터가 빨간 줄로 표시
  • 언어 엔진이 컴퓨터에 설치되어 있어야 하고, 에디터와 연결(확장)되어 있어야만 가능
  • 이 과정은 "실행"이 아니라 "안전한 문법 분석"이라 파일 삭제 같은 부작용 없이 반복 가능
  • 엔진이 설치 안 되어 있으면: 문법 강조는 되지만 빨간 줄(오류 감지)은 안 뜨거나, "인터프리터를 선택해주세요" 같은 경고가 뜸

디버깅(Debugging)이란?

"버그(오류)를 찾아서 고치는 작업". 컴파일 오류는 IDE가 실행 전에 미리 잡아주지만, 런타임 오류나 "실행은 되는데 결과가 이상한" 문제는 실행해서 직접 들여다봐야만 원인을 찾을 수 있다. 이때 코드 실행을 잠깐 멈추고 내부를 들여다보는 작업이 디버깅이다.

테스트와의 차이

  테스트 디버깅
목적 문제가 있는지 감지 발견된 문제의 원인 추적
결과 통과(Pass) / 실패(Fail) 어느 줄이 왜 잘못됐는지 파악
순서 먼저 실행해서 문제 발견 그다음 원인을 파고들어 해결
테스트 실행 → "실패했다!" (문제 발견)
      ↓
디버깅 시작 → "어느 줄이 문제지?" (원인 추적)
      ↓
코드 수정 → 다시 테스트 → 통과 확인

IDE가 디버깅을 위해 제공하는 것

언어 엔진 자체에도 디버깅 기능은 있지만, 터미널에서 직접 조작하려면 매우 번거롭다. IDE는 이를 클릭 몇 번으로 가능하게 해준다.

  1. 중단점(breakpoint) 찍는 UI — 코드 줄 번호 옆을 클릭하면 "여기서 멈춰라" 표시가 생김
  2. 디버그 실행 버튼 — 중단점까지 실행하고 자동으로 멈춤
  3. 변수 확인 창 — 멈춘 시점의 모든 변수 값을 자동으로 보여줌
  4. 진행 컨트롤 — 한 줄만 더 실행(Step Over), 함수 안으로 들어가기(Step Into), 계속 진행(Continue) 등

디버깅 예시

def calculate_average(numbers):
    total = 0
    for n in numbers:
        total += n
    return total / len(numbers)

print(calculate_average([10, 20, 30]))
# 기대: 20
# 실제 출력: 6.666...  ← 뭔가 이상함! (에러는 안 나지만 결과가 틀림)

디버깅 과정:

  1. total += n 줄에 중단점을 건다
  2. Debug 버튼 클릭 → 그 줄에서 실행이 멈춤
  3. 변수 창에서 total, n 값을 한 단계씩 확인
    • 1번째: n=10, total=10 ✅
    • 2번째: n=20, total=30 ✅
    • 3번째: n=30, total=60 ✅
  4. return total / len(numbers) 줄에서 total=60인데 len(numbers)가 예상(3)과 다른 값으로 나오는 걸 발견
  5. 함수를 호출하는 다른 곳에서 리스트를 잘못 만들고 있었다는 원인을 찾아냄

핵심: 중단점으로 멈추고 → 변수 값을 하나씩 확인하며 → "예상과 다른 값이 나오는 지점"을 좁혀나가는 것이 디버깅의 실제 과정이다.


한눈에 정리하는 최종 그림

[VSCode 에디터] --(확장으로 연결)--> [언어 엔진: Python/JDK]
       |                                      |
   코드 작성                          컴파일(번역) + 실행 담당
       |                                      |
   빨간 줄 표시 ←--------- 문법 분석 결과 ----------┘
  • 에디터: 코드 작성 + 결과를 보여주는 창구
  • 언어 엔진: 실제 번역/실행을 수행하는 엔진
  • 확장: 이 둘을 연결하는 다리 (엔진 없이는 무용지물