Skip to content
Published on

IDE별 디버깅 완전정리: VS Code · IntelliJ IDEA · PyCharm 브레이크포인트, 실행 구성, 프로파일링

Authors
  • Name
    Twitter

IDE 디버깅은 “설정”이 절반이다

좋은 IDE를 쓰는데도 디버깅이 느린 이유는 대부분 같다.

  • 실행 구성이 매번 달라 재현이 흔들림
  • 브레이크포인트를 무작정 많이 찍음
  • 프로파일링을 장애 후반에야 시작함

아래 설정을 팀 표준으로 맞추면 디버깅 속도가 눈에 띄게 빨라진다.


1) VS Code

실행 구성 (launch.json)

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python API",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/app/main.py",
      "console": "integratedTerminal",
      "envFile": "${workspaceFolder}/.env"
    },
    {
      "name": "Node API",
      "type": "node",
      "request": "launch",
      "program": "${workspaceFolder}/dist/index.js",
      "runtimeArgs": ["--inspect-brk"],
      "sourceMaps": true
    }
  ]
}

브레이크포인트 팁

  • 조건부 브레이크포인트: 특정 userId/requestId에서만 중단
  • Logpoint: 중단 없이 값만 출력
  • Exception breakpoint: 예외 발생 시 즉시 멈춤

프로파일링

  • JS/TS: DevTools Performance/Memory
  • Python: 터미널에서 py-spy 연동
  • 확장 기능: Error Lens, Python, Java, Go 확장 조합 권장

2) IntelliJ IDEA

Run/Debug Configuration

필수 표준화 항목:

  • JVM 옵션(Heap, GC, Debug port)
  • 환경변수 파일
  • 활성 프로파일(dev/stg)
  • working directory

원격 디버그는 “Attach to process”보다 고정 포트 설정을 권장.

브레이크포인트 고급 기능

  • Condition (orderId == 1234)
  • Evaluate expression
  • Method breakpoint(비용 큼, 꼭 필요할 때만)
  • Exception breakpoint (NPE, IllegalStateException)

프로파일링

  • IntelliJ built-in Profiler (Ultimate)
  • JFR 파일 열어 hotspot 확인
  • flamegraph에서 상위 10개 함수부터 처리

3) PyCharm

실행 구성

  • Script path / Module name 고정
  • Parameters를 샘플 입력으로 저장
  • env file 연결
  • pytest configuration 분리(unit/integration)

브레이크포인트

  • conditional + hit count 조합
  • Django/FastAPI 엔드포인트 진입점에 우선 배치
  • 멀티스레드 디버깅 시 thread 전환 확인

프로파일링

  • PyCharm Profiler(또는 cProfile 통합)
  • Line Profiler로 느린 함수 라인 단위 분석
  • 대용량 데이터는 object viewer보다 요약값으로 점검

IDE 공통 베스트 프랙티스

1) 디버그 프로필을 코드처럼 관리

  • .vscode/launch.json, .run/, .idea 일부 템플릿을 저장소에 포함
  • 팀원 온보딩 시 “실행 버튼 한 번”으로 재현 가능하게

2) 브레이크포인트 계층화

  • Level 1: 진입/경계
  • Level 2: 분기 조건
  • Level 3: 내부 루프(조건부만)

3) 프로파일링을 조기 시작

  • “느리다” 체감하면 바로 60초 샘플링
  • 감으로 최적화하지 말고 증거 기반으로 처리

4) 재현 스크립트 자동화

  • Makefile/npm script/pytest marker로 고정
  • 실행 인자 누락으로 인한 “내 로컬만 됨” 방지

장애 대응용 빠른 체크리스트

  • 같은 입력으로 재현되는가?
  • Exception breakpoint 켰는가?
  • request id로 전체 경로 추적되는가?
  • CPU/메모리 프로파일 캡처했는가?
  • 원인과 재발방지 테스트를 남겼는가?

결론

IDE는 편집기가 아니라 문제 탐지 장비다. 실행 구성/브레이크포인트/프로파일링을 표준화하면, 개인 역량이 아니라 팀 시스템으로 디버깅 속도를 끌어올릴 수 있다.

빠른 디버깅은 천재성이 아니라, 잘 설계된 IDE 습관에서 나온다.