모던 리액트 Deep Dive 스터디

크롬 개발자 도구를 활용한 애플리케이션 분석

려낭 2024. 11. 23. 14:26
 

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)

 

메모리 탭은 웹 애플리케이션의 메모리 사용 현황을 분석하여 메모리 누수, 성능 저하, 웹페이지 프리징 문제를 진단할 수 있는 도구입니다.

 

주요 기능

  1. 힙 스냅샷 (Heap Snapshot):
    • 현재 메모리 상태를 캡처하여 상세히 분석.
    • 특정 시점의 메모리 점유율을 비교하고 싶을 때 유용.
  2. 타임라인 할당 계측:
    • 시간의 흐름에 따라 메모리 사용량 변화를 확인.
    • 로딩 과정이나 상호작용 시 메모리 변화를 추적.
  3. 할당 샘플링:
    • 메모리를 점유하는 자바스크립트 함수 및 실행 컨텍스트를 분석.
    • 문제 함수 위치를 소스 패널에서 직접 확인 가능.

추가 팁

  • 스냅샷 비교: 두 개의 힙 스냅샷을 비교하여 메모리 변화를 명확히 파악.
  • 실시간 모니터링: 시간 흐름에 따른 메모리 점유율을 분석해 최적화 작업 수행.

 

 

7.6 Next.js 환경 디버깅

 

Next.js와 같은 프레임워크 기반 애플리케이션에서 디버깅을 진행할 경우, 메모리 탭의 힙 스냅샷타임라인 할당 계측 도구를 함께 사용하면 보다 명확한 결과를 도출할 수 있습니다. 그러나 힙 점유율이 변화가 없는 경우, 다음과 같은 방법을 시도해 보세요.

 

 

디버깅 팁

  1. 컴포넌트별 메모리 점유 분석: Next.js는 SSR(Server Side Rendering)과 CSR(Client Side Rendering)을 병행하기 때문에 각 렌더링 방식의 메모리 점유를 별도로 분석.
  2. 비교 기반 분석: 동일한 조건의 스냅샷 두 개를 비교하여 메모리 누수 여부 파악.
  3. 동적 데이터 로드 확인: 데이터 패칭 로직(예: getServerSideProps, getStaticProps)에서 불필요한 메모리 사용을 방지.