효과적으로 디버깅하기 위한 방법에 대해서 설명해주세요.
분야: 프론트엔드
💬 면접자 개인의 경험/노하우를 묻는 질문입니다. 아래의 답안은 참고용으로만 읽어주세요.
디버깅을 잘하기 위해서는 문제를 정확히 이해하는 것이 가장 중요하다고 생각합니다. 따라서 가장 먼저 오류 메시지를 꼼꼼하게 읽어 어떤 원인에 의해 문제가 발생한 것인지 구체적이고 명확하게 파악하려 노력합니다.
다음으로, 문제를 격리하는 과정이 필요합니다. 코드베이스가 클수록, 문제가 특정 위치에 국한되지 않고 여러 요소가 얽혀 있을 가능성이 높습니다. 이럴 때는 문제를 작게 분리해 재현 가능한 환경을 구성하는 것이 중요합니다. 예를 들어, 복잡한 컴포넌트에서 문제가 발생하면 해당 컴포넌트만 따로 실행해보거나, 간단한 테스트 데이터를 사용해 문제가 있는 부분만 집중적으로 테스트하는 방식으로 문제를 좁혀갈 수 있습니다. 이러한 과정을 거쳐 크고 복잡한 문제를 작고 단순한 문제로 최대한 깎아냅니다.
문제를 좁히는 과정에서, 정상 케이스의 동작 흐름과 문제 상황의 동작 흐름을 비교하는 일도 문제를 좁히는 데 큰 도움이 됩니다. 정상적으로 동작한다면 애플리케이션이 어떤 절차로 동작해야 하는지 먼저 스케치해본 후, 문제 상황 당시의 동작 흐름을 스케치하여 비교합니다. 그 후, 두 동작 흐름 간의 차이를 바탕으로 문제 지점을 도출합니다.
마지막으로, 파악한 문제를 해결할 수 있는 방법을 모색합니다. 우선적으로 공식 문서와 공신력 있는 출처의 글들을 참고하여 문제 해결 방법을 찾습니다. 혹은, 관련 Github 레포지토리를 찾아가 Issue 게시판을 탐색하기도 합니다. 그럼에도 해결법을 찾지 못하면 구글링 및 생성형 AI를 활용하여 검색합니다.
이외에도, 브라우저 개발자 도구 및 IDE에서 제공하는 디버깅 도구들을 적극적으로 활용하거나, 문제 해결 후 그 과정을 기록하는 습관을 들이는 등 여러 노력을 기울이고 있습니다.