디버깅
디버깅은 프로그램이 기대와 다르게 동작하는 원인을 재현, 관찰, 격리, 수정, 검증하는 문제 해결 과정입니다.
기본 흐름
- 오류 메시지와 증상을 정확히 읽습니다.
- 문제를 재현할 수 있는 최소 조건을 만듭니다.
- 정상 흐름과 문제 흐름을 비교합니다.
- 의심 지점을 좁히고 가설을 세웁니다.
- 로그, 브레이크포인트, 테스트로 가설을 검증합니다.
- 수정 후 재발 방지 테스트나 기록을 남깁니다.
문제 격리
코드베이스가 클수록 여러 요소가 얽혀 있을 가능성이 큽니다. 이때는 문제를 작은 단위로 분리해야 합니다.
- 특정 컴포넌트만 독립 실행합니다.
- 최소 테스트 데이터를 사용합니다.
- 최근 변경 사항을 기준으로 범위를 좁힙니다.
- 네트워크, 상태, 렌더링, 스타일 문제를 분리해서 확인합니다.
도구
- 브라우저 개발자 도구
- IDE 디버거와 브레이크포인트
- 네트워크 탭과 콘솔 로그
- React DevTools
- 테스트 코드와 스냅샷
- Git diff, bisect, blame
주의사항
- 추측만으로 수정하면 원인을 놓치기 쉽습니다.
- 로그를 과하게 남기면 중요한 신호가 묻힙니다.
- 수정 후 같은 문제가 재발하지 않도록 테스트나 기록을 남겨야 합니다.
핵심 정리
좋은 디버깅은 빠르게 코드를 고치는 것이 아니라 문제를 정확히 재현하고 원인을 좁혀 검증하는 과정입니다.
문제를 작게 만들고, 정상 흐름과 문제 흐름의 차이를 찾는 것이 핵심입니다.