브라우저 DevTools — 디버깅의 첫 도구
브라우저 DevTools — 디버깅의 첫 도구
처음 몇 달의 프론트엔드 작업 가운데 절반은 DevTools 사용법을 익히는 시간이라 해도 과장이 아닙니다. 콘솔에 값을 찍고, 네트워크 요청을 검사하고, 스타일을 즉석에서 바꿔 보고, 모바일 화면을 시뮬레이션 하는 모든 작업이 한 패널 안에서. 이 글은 DevTools 의 출자 · 핵심 패널 · 자주 쓰는 디버깅 흐름.
1. DevTools 에 대한 이야기
브라우저에 내장된 개발자 도구는 2006 년 Mozilla 의 Firebug 확장이 첫 인기를 얻었고, 2008 년 Google Chrome 출시와 함께 Chrome DevTools 가 표준 도구의 자리에. Safari 는 Web Inspector, Firefox 는 자체 Developer Tools. Edge 는 Chromium 기반이라 Chrome 과 거의 같음.
여는 단축키:
| OS · 브라우저 | 단축키 |
|---|---|
| Windows · Chrome / Edge / Firefox | F12 또는 Ctrl + Shift + I |
| macOS · Chrome / Edge / Firefox | Cmd + Option + I |
| macOS · Safari | Cmd + Option + I (먼저 환경설정 > 고급 > 개발자용 메뉴 활성화) |
특정 요소를 곧장 검사하려면 우클릭 → "검사" / "Inspect Element" 가 가장 빠름.
2. 핵심 패널
| 패널 | 쓰임 |
|---|---|
| Elements | DOM 트리 · CSS 스타일 검사. 라이브 편집 |
| Console | JS 실행 · console.log 출력 · 에러 |
| Sources | 소스 파일 보기 · 브레이크포인트 · 디버거 |
| Network | HTTP 요청 · 응답 · 헤더 · payload · 타이밍 |
| Performance | CPU 프로파일 · 렌더링 타임라인 |
| Memory | 힙 스냅샷 · 메모리 누수 추적 |
| Application | 쿠키 · LocalStorage · IndexedDB · Service Worker · Cache |
| Lighthouse | 성능 · 접근성 · SEO 자동 감사 |
| Security | 인증서 · HTTPS 상태 |
| Recorder (Chrome) | 사용자 흐름 녹화 · 재생 |
3. Elements 패널
DOM 을 트리로. 노드를 선택하면 오른쪽에 적용된 CSS 가 우선순위 순서로 정렬되어 나옴. 줄을 클릭해 즉석에서 값을 바꿀 수 있고, 변경은 새로고침 시 사라짐.
Computed 탭은 최종적으로 적용된 모든 스타일을, Layout 탭은 박스 모델 시각화를, Accessibility 탭은 계산된 ARIA 속성을 보여 줌.
4. Console 패널
console.log("기본 출력");
console.warn("경고");
console.error("에러");
console.table([{ id: 1, name: "a" }, { id: 2, name: "b" }]);
console.dir(document.body);
console.time("step"); /* ... */ console.timeEnd("step");
console.trace(); // 호출 스택 출력
console.assert(x > 0, "양수여야");
$0 은 Elements 에서 마지막에 선택한 노드, $_ 는 마지막 식의 결과를 가리키는 콘솔 전용 변수.
5. Sources 패널
JS 디버거. 소스 파일에서 줄 번호를 클릭하면 브레이크포인트. 실행이 멈추면 변수 · 콜 스택 · 스코프를 검사.
| 단축키 (Win · Mac 공통) | 동작 |
|---|---|
F8 또는 Ctrl/Cmd + \ |
다음 브레이크포인트까지 실행 |
F10 |
step over (다음 줄, 함수 안으로 안 들어감) |
F11 |
step into (함수 안으로) |
Shift + F11 |
step out (함수 밖으로) |
브레이크포인트 종류:
- Line breakpoint — 줄에서 멈춤.
- Conditional breakpoint — 조건이 참일 때만.
- Logpoint — 코드 수정 없이 콘솔 로그만 추가.
- DOM breakpoint — 특정 노드의 변경 시 멈춤.
- XHR / Fetch breakpoint — 특정 URL 요청 시.
- Event listener breakpoint —
click·keydown등 이벤트 발생 시.
6. Network 패널
HTTP 트래픽을 실시간으로. 자주 쓰는 기능:
- 필터 —
XHR·JS·CSS·Img·Doc카테고리 또는 정규식. - Preserve log — 페이지 이동 시에도 기록 유지. 로그인 흐름 디버깅에 필수.
- Disable cache — DevTools 가 열려 있는 동안 캐시 비활성. 변경된 정적 파일이 안 들어올 때.
- Throttling — 느린 3G 시뮬레이션.
- 요청 클릭 — Headers · Payload · Preview · Response · Timing 으로 분해.
요청 우클릭의 Copy as cURL 은 같은 요청을 터미널에서 재현할 수 있는 한 줄. 백엔드 디버깅에 자주.
7. Application 패널
브라우저 저장소를 모두 보는 자리:
- Cookies — 이름 · 값 · 도메인 ·
HttpOnly·Secure·SameSite확인. 인증 디버깅의 첫 자리. - Local Storage / Session Storage — 키-값 직접 편집.
- IndexedDB — 객체 저장소를 트리로.
- Service Workers — 등록된 워커, 강제 갱신 · 언레지스터.
- Cache Storage — 워커가 캐싱한 자원.
8. Performance · Lighthouse · 모바일 에뮬레이션
Performance — 녹화 버튼을 누르고 페이지를 조작한 뒤 멈추면 CPU · 네트워크 · 렌더링 타임라인. Long Task (50 ms 이상 걸린 작업) 는 빨간 막대.
Lighthouse — 자동화된 페이지 감사. Performance · Accessibility · Best Practices · SEO 의 4 축을 100 점 만점으로. 결과 페이지의 권장 사항이 학습 포인트.
모바일 에뮬레이션 — DevTools 좌상단의 "Toggle device toolbar" (Win: Ctrl + Shift + M, Mac: Cmd + Shift + M) 로 모바일 뷰포트 시뮬레이션. iPhone · Pixel 등 프리셋. User-Agent 와 터치 이벤트도 흉내. 진짜 모바일 검증은 실제 단말이 필요.
9. Chrome DevTools Protocol (CDP)
DevTools 자체가 브라우저와 통신하는 프로토콜이 공개. Puppeteer · Playwright 같은 자동화 도구가 CDP 를 통해 브라우저를 조작. 디버깅 도구와 자동화 도구가 같은 표면을 공유.
10. 다른 길
- VS Code 디버거 — Chrome / Edge 에 attach 해 IDE 안에서 브레이크포인트.
- React Developer Tools / Vue DevTools / Redux DevTools — 프레임워크 전용 확장. 컴포넌트 트리 · 상태 변화 검사.
- Postman · Insomnia · Bruno — API 호출 도구. Network 탭의 보완.
- Wireshark · tcpdump — 패킷 단위 분석.
11. 작은 디버깅 흐름
- 페이지에서 버튼이 안 눌림.
- Console 탭으로 가 빨간 에러 확인.
- 에러 메시지의 파일 · 줄 클릭 → Sources 패널에서 해당 줄로 이동.
- 그 줄에 브레이크포인트.
- 페이지 새로고침, 다시 버튼 클릭.
- 멈춘 자리에서 변수와 콜 스택 검사.
- 가설을 세워 코드 수정 → 다시 시도.
12. 자주 걸리는 자리
콘솔의 빨간 에러를 못 본 채 다른 자리를 의심 — 디버깅의 첫 단계는 항상 콘솔.
네트워크 요청이 4xx / 5xx 인데 응답 본문에 자세한 메시지 — Response 탭을 꼭 펼쳐 봄.
페이지 이동 후 Network 로그가 사라져 인증 흐름을 못 추적 — "Preserve log" 켜기.
Service Worker 가 옛 자원을 계속 내줌 — Application > Service Workers 에서 unregister 또는 "Update on reload".
DevTools 자체의 캐시 — 같은 URL 의 다른 응답을 보고 싶을 때 Disable cache.
JS 가 minify 돼 한 줄 — Pretty print 버튼 ({}) 을 누르면 가독성 있게 펼침. Source map 이 있으면 원본도 함께.
하고픈 말
DevTools 의 Console · Network · Sources · Application 네 패널이 디버깅의 90% 를 커버합니다. 빨간 에러 메시지의 출처를 따라 들어가는 것이 가장 빠른 길. 자동화된 검증은 chrome-devtools MCP · Playwright 가 같은 토대 위에. 신참 개발자가 가장 먼저 익혀야 할 도구이자, 10 년 후에도 매일 쓰는 도구.
Next
- (web-fundamentals 끝)
Chrome DevTools Documentation · Firefox Developer Tools · Safari Web Inspector Reference · Chrome DevTools Protocol Viewer · React Developer Tools · Vue DevTools · Lighthouse · The History of Firebug (Wikipedia) 를 참고합니다.