Debugging TypeScript

소스맵 기반 TypeScript 디버깅 루프

TypeScript 디버깅은 TS 원본, JS 출력, sourcemap, 런타임 스택을 맞춰 보는 작업이며 비동기 경계에서 정보가 쉽게 끊깁니다.

01

컴파일 설정 확인

sourceMap, inlineSources, outDir, module 설정이 런타임 도구와 맞는지 확인합니다.

tsconfig
02

브레이크포인트 매핑

TS 원본 줄과 실행 중인 JS 위치가 정확히 대응되는지 먼저 검증합니다.

mapping
03

실행 컨텍스트 확인

Node, 브라우저, 테스트 러너 중 어디에서 실행되는지에 따라 디버거 연결 방식이 달라집니다.

runtime
04

비동기 스택 추적

Promise, timer, event callback 경계에서 원래 호출 흐름이 사라지는 지점을 봅니다.

async
05

재현 코드 축소

타입 오류와 런타임 오류를 분리하고 최소 입력으로 다시 실행합니다.

minimal case
Breakpoint skip
소스맵 불일치 빌드 산출물과 sourcemap이 오래됐거나 outDir 경로가 디버거 설정과 다를 수 있습니다.
클린 빌드 확인
Undefined value
타입 보장과 런타임 입력 차이 외부 JSON, DOM, 네트워크 응답은 타입 선언만으로 안전해지지 않습니다.
runtime guard 필요
Async error
호출 경계 단절 await 누락, Promise 체인, 이벤트 핸들러에서 오류 전파 방식이 달라집니다.
stack 보존

디버깅 품질 기준

원본 기준 디버거가 TS 원본에서 멈추지 않으면 먼저 빌드와 맵핑부터 고칩니다.
타입과 값 분리 컴파일 타임 타입이 맞아도 런타임 값이 유효하다는 뜻은 아닙니다.
재현성 한 번만 발생하는 오류는 입력, 시간, 비동기 순서를 기록해야 추적됩니다.