7.1 크롬 개발자 도구란?
크롬 브라우저에서 제공하는 개발자용 도구로, 웹페이지에서 일어나는 거의 모든 작업을 분석하고 디버깅할 수 있는 강력한 기능을 제공합니다. HTML, CSS, JavaScript를 포함한 다양한 요소를 실시간으로 확인, 수정하며 디버깅 과정을 간소화할 수 있어 웹 개발자들에게 필수적인 도구로 자리 잡고 있습니다.
7.2 요소 탭 (Elements)
요소 탭은 현재 웹페이지를 구성하는 HTML과 CSS의 구조 및 스타일 정보를 제공하며, 이를 실시간으로 확인하거나 수정할 수 있는 공간입니다.
주요 기능
- HTML 확인 및 수정: HTML 코드를 실시간으로 수정하여 변경사항을 바로 확인 가능.
- 스타일 검사 및 수정: 특정 요소에 적용된 CSS 스타일 확인 및 수정.
- 디버깅 지원: 중단점을 설정하여 특정 코드 실행 시점에서 디버깅 가능.
- 레이아웃 분석: CSS Grid와 같은 레이아웃 관련 구조 시각화.
세부 탭 설명
- 스타일: 클래스나 아이디별로 맵핑된 스타일 확인 및 변경.
- 계산됨: 계산된 스타일 값을 표시, CSS 우선순위 확인 가능.
- 레이아웃: CSS 레이아웃 및 Grid의 구성 상태 확인.
- 이벤트 리스너: 요소에 부착된 이벤트 리스너 목록 확인.
- DOM 중단점: DOM의 변경을 추적할 수 있는 디버깅 도구.
- 속성: 해당 요소의 모든 속성값 표시.
- 접근성: 스크린리더 등 접근성 지원 정보 확인.
7.3 소스 탭 (Sources)
소스 탭은 웹페이지에서 로드된 모든 소스 파일을 확인하고 디버깅할 수 있도록 도와줍니다. 특히, 소스 파일을 직접 수정하지 않고 디버깅 작업을 수행할 수 있어 코드 오염을 방지하면서 테스트를 진행할 수 있습니다.
주요 기능
- 변수 감시: 원하는 변수를 설정하여 실시간으로 변수 값을 모니터링.
- 중단점 관리: 설정한 중단점 목록을 확인하고 제어.
- 범위(Scope): 현재 실행 컨텍스트에서의 변수와 값 확인.
- 호출 스택(Call Stack): 함수 호출 과정을 시각적으로 확인.
- 전역 리스너: 현재 활성화된 전역 이벤트 리스너 확인.
7.4 네트워크 탭 (Network)
네트워크 탭은 웹페이지 로드 과정에서 발생하는 네트워크 요청을 분석할 수 있는 도구입니다. 각 요청의 상태, 응답 데이터, 리소스 크기 등을 확인할 수 있어 성능 최적화 작업에 필수적입니다.
주요 체크리스트
- 중복 요청 확인: 불필요한 중복 요청을 찾아 제거.
- 리소스 크기 최적화: 리소스 파일의 크기를 줄여 로딩 시간을 단축.
- 다운로드 우선순위 확인: 페이지의 자연스러운 로딩을 방해하는 리소스 식별.
- 속도 분석: 리소스 로딩 속도가 적절한지 확인.
7.5 메모리 탭 (Memory)
메모리 탭은 웹 애플리케이션의 메모리 사용 현황을 분석하여 메모리 누수, 성능 저하, 웹페이지 프리징 문제를 진단할 수 있는 도구입니다.
주요 기능
- 힙 스냅샷 (Heap Snapshot):
- 현재 메모리 상태를 캡처하여 상세히 분석.
- 특정 시점의 메모리 점유율을 비교하고 싶을 때 유용.
- 타임라인 할당 계측:
- 시간의 흐름에 따라 메모리 사용량 변화를 확인.
- 로딩 과정이나 상호작용 시 메모리 변화를 추적.
- 할당 샘플링:
- 메모리를 점유하는 자바스크립트 함수 및 실행 컨텍스트를 분석.
- 문제 함수 위치를 소스 패널에서 직접 확인 가능.
추가 팁
- 스냅샷 비교: 두 개의 힙 스냅샷을 비교하여 메모리 변화를 명확히 파악.
- 실시간 모니터링: 시간 흐름에 따른 메모리 점유율을 분석해 최적화 작업 수행.
7.6 Next.js 환경 디버깅
Next.js와 같은 프레임워크 기반 애플리케이션에서 디버깅을 진행할 경우, 메모리 탭의 힙 스냅샷과 타임라인 할당 계측 도구를 함께 사용하면 보다 명확한 결과를 도출할 수 있습니다. 그러나 힙 점유율이 변화가 없는 경우, 다음과 같은 방법을 시도해 보세요.
디버깅 팁
- 컴포넌트별 메모리 점유 분석: Next.js는 SSR(Server Side Rendering)과 CSR(Client Side Rendering)을 병행하기 때문에 각 렌더링 방식의 메모리 점유를 별도로 분석.
- 비교 기반 분석: 동일한 조건의 스냅샷 두 개를 비교하여 메모리 누수 여부 파악.
- 동적 데이터 로드 확인: 데이터 패칭 로직(예: getServerSideProps, getStaticProps)에서 불필요한 메모리 사용을 방지.
'모던 리액트 Deep Dive 스터디' 카테고리의 다른 글
4장 - 서버 사이드 렌더링(2) (0) | 2024.11.29 |
---|---|
4장 - 서버사이드 렌더링 (3) | 2024.11.28 |
리액트 개발 도구로 디버깅하기 (0) | 2024.11.19 |
3장 발표자료 - 리액트 훅 깊게 살펴보기 (1) | 2024.11.17 |
사용자 정의 훅과 고차 컴포넌트 중 무엇을 써야할까? (1) | 2024.11.16 |