개발 도구 ·
개발자 도구 Elements와 Network로 문제 범위를 좁히는 법
먼저 답부터
Elements는 브라우저가 지금 그린 화면의 구조와 스타일을 살펴보는 곳이고, Network는 문서·이미지·API 요청이 실제로 오갔는지 확인하는 곳입니다. 글자·간격 문제는 Elements에서, 로딩·상태 코드·응답 문제는 Network에서 먼저 보면 화면 문제와 통신 문제를 빠르게 나눌 수 있습니다.
웹페이지에서 버튼 글자가 잘리거나 이미지가 비어 있으면 코드 전체가 망가졌다고 느끼기 쉽습니다. 하지만 같은 화면 증상도 화면 구조와 꾸밈이 잘못된 경우가 있고, 서버에서 파일이나 데이터를 받지 못한 경우가 있습니다. 두 경우는 확인할 증거가 다릅니다.
Chrome 개발자 도구는 브라우저가 현재 페이지를 어떻게 그리고 통신하는지 살펴보는 내장 도구입니다. 그중 Elements는 눈앞의 진열대를 보고, Network는 주문이 오간 기록을 보는 창이라고 생각하면 첫 점검 순서를 잡기 쉽습니다.
Elements와 Network는 진열대와 주문 전달 장부처럼 다르다
Elements는 브라우저가 현재 화면을 만들 때 쓰는 DOM과 CSS를 보여 줍니다. DOM은 HTML을 읽어 만든 현재 화면의 구조이고, CSS는 글자 크기와 색, 간격, 배치처럼 보이는 모양을 정하는 규칙입니다. 가게로 비유하면 어떤 상품이 어느 선반에 놓였고 가격표가 가려졌는지 진열 상태를 보는 일에 가깝습니다.
Network는 브라우저가 문서, 이미지, 글꼴, JavaScript, API 데이터를 요청하고 받은 기록을 보여 줍니다. Chrome 공식 문서도 파일이 실제로 내려받아졌는지, 개별 요청의 헤더와 내용과 크기를 확인할 때 Network를 쓰도록 설명합니다. 가게 뒤편에서 주문서가 주방에 도착했는지, 물건이 반송됐는지 확인하는 전달 장부에 가깝습니다.
Elements에서는 지금 화면에 있는 요소부터 찾는다
화면에서 문제가 보이는 부분을 마우스 오른쪽 버튼으로 누르고 검사 또는 Inspect를 선택하면 Elements에서 해당 DOM 노드를 바로 찾을 수 있습니다. 노드는 제목, 문단, 버튼, 이미지처럼 화면 구조를 이루는 한 조각입니다. 선택한 노드 위에 마우스를 올리면 화면의 어느 영역인지 표시되고, 적용된 CSS와 크기와 여백을 함께 볼 수 있습니다.
예를 들어 버튼 글자가 잘렸다면 버튼이 실제로 존재하는지, 너비가 너무 작게 정해졌는지, 글자를 숨기는 규칙이 적용됐는지를 먼저 봅니다. HTML 원문과 DOM은 항상 같지 않습니다. JavaScript가 화면을 연 뒤 요소를 추가하거나 지울 수 있으므로 Elements에는 브라우저가 지금 사용 중인 구조가 보입니다.
Chrome 공식 문서는 Elements에서 DOM 내용을 임시로 바꾸고 결과를 바로 볼 수 있다고 설명합니다. 다만 여기서 글자나 색을 고친 것은 원본 파일을 저장한 일이 아닙니다. 새로고침하면 대부분 사라지므로, 확인한 규칙과 파일 위치를 기록한 뒤 실제 소스 코드를 별도로 고쳐야 합니다.
Network는 연 뒤 새로고침해야 요청이 쌓인다
Network는 열려 있는 동안 생긴 통신을 기록합니다. 탭을 열기 전에 이미 받아 온 파일은 목록에 없을 수 있으므로 Network를 연 다음 페이지를 새로고침합니다. 목록의 한 줄은 보통 요청 하나이며, 이름, 상태 코드, 파일 종류, 크기, 걸린 시간을 순서대로 볼 수 있습니다.
요청 이름 상태 종류
product.jpg 404 image
products 200 fetch
main.css 200 stylesheet
이 예시에서 상품 데이터 요청과 CSS는 성공했지만 이미지 파일은 찾지 못했습니다. 화면에 빈 이미지가 보인다면 디자인을 모두 다시 만들기 전에 product.jpg 주소와 배포된 파일부터 확인할 수 있습니다. 200은 정상 응답, 404는 요청한 자원을 찾지 못한 상태지만 상태 코드 하나가 원인 전체를 설명하지는 않습니다.
같은 증상도 두 패널에서 갈라 보면 범위가 줄어든다
이미지가 보이지 않는 상황을 두 갈래로 나눠 보겠습니다. Elements에서 img 요소가 없으면 화면을 만드는 조건이나 JavaScript 흐름을 확인할 차례입니다. 요소는 있는데 CSS의 display: none이 적용됐다면 화면 규칙 문제일 가능성이 큽니다. 요소도 있고 공간도 있는데 Network에서 이미지 요청이 404라면 파일 경로나 배포 결과를 먼저 봅니다.
버튼을 눌렀는데 목록이 나타나지 않는 경우도 같습니다. Elements에서 결과 영역이 만들어졌지만 화면 밖에 밀렸다면 배치 문제입니다. Network에서 API 요청 자체가 없으면 클릭 동작과 JavaScript를 확인합니다. 요청은 있는데 401이나 500이면 로그인 상태, 권한, 서버 처리와 응답 내용을 확인할 차례입니다. 이 순서는 원인을 확정하는 판결이 아니라 다음에 볼 범위를 줄이는 지도입니다.
- 요소가 존재하는지 Elements에서 봅니다.
- 요소의 크기와 숨김 규칙을 확인합니다.
- Network를 연 뒤 같은 동작을 한 번 재현합니다.
- 관련 요청의 주소, 상태, 종류를 적습니다.
- 화면 증상과 첫 실패 요청이 같은 시각인지 비교합니다.
- 알게 된 사실과 아직 추정인 내용을 나눠 기록합니다.
임시 변경과 실제 수정 완료를 구분한다
Elements에서 글자를 바꾸거나 노드를 숨기면 화면이 즉시 달라져 가설을 시험하기 좋습니다. 하지만 이 변경은 다른 방문자에게 적용되지 않고 서버 파일도 고치지 않습니다. Network에서 응답을 읽었다고 서버 문제가 해결되는 것도 아닙니다. 개발자 도구는 증거를 모으는 관찰 창이지 배포 완료 표시가 아닙니다.
문제를 찾은 뒤에는 실제 파일을 고치고 테스트와 빌드를 통과시킨 다음 공개 주소에서 다시 확인해야 합니다. 로컬 화면이 정상이어도 배포에 이미지가 빠지거나 오래된 파일이 전달될 수 있습니다. 저장, 빌드, 배포, 공개 확인을 서로 다른 상태로 적으면 임시 화면을 완성본으로 착각하지 않습니다.
비밀값과 변경 요청은 관찰 범위에서 보호한다
Network의 요청 헤더와 쿠키에는 로그인 세션, 인증 토큰, 사용자 정보가 들어 있을 수 있습니다. 화면을 공유할 때는 Authorization, Cookie, 이메일, 주문 번호, 결제 관련 값을 가립니다. 오류 질문을 위해 전체 HAR 파일이나 요청 복사본을 공개 게시판과 AI 대화에 그대로 붙이지 않습니다.
모르는 코드를 Console에 붙여 넣거나, 의미를 모르는 요청을 다시 보내지 마세요. 특히 POST, PUT, PATCH, DELETE처럼 서버 상태를 바꿀 수 있는 요청은 주문, 결제, 삭제를 반복할 수 있습니다. 운영 계정이 아니라 개인정보가 없는 공개 페이지에서 읽기부터 연습하고, 삭제나 결제 설정은 개발자 도구 실습 대상으로 삼지 않습니다.
오늘 바로 해볼 작은 실습
로그인하지 않은 공개 페이지 한 곳에서 10분 동안 읽기만 합니다.
- Chrome에서 페이지를 열고 제목 한 곳을 마우스 오른쪽 버튼으로 눌러 검사합니다.
- Elements에서 선택된 제목 노드와 적용된 글자 크기를 찾습니다.
- Network 탭을 연 뒤 페이지를 한 번 새로고침합니다.
- 가장 위의 document 요청과 이미지 요청 하나의 상태 코드를 적습니다.
- 이미지 요소의
src주소와 Network의 요청 이름이 연결되는지 확인합니다. - Elements의 임시 변경이 저장이 아니라는 문장을 기록합니다.
- 쿠키와 인증 헤더를 열거나 복사하지 않고 개발자 도구를 닫습니다.
실습이 끝나면 “화면에 요소가 있는가”, “요청이 실제로 갔는가”, “어떤 응답을 받았는가” 세 질문에 답해 보세요. 세 질문을 순서대로 나누는 습관만으로도 AI에게 막연히 화면 전체를 다시 만들어 달라고 하기보다, 확인된 증상과 다음 조사 범위를 정확히 전달할 수 있습니다.
확인한 자료
- Get started with viewing and changing the DOM — Chrome for Developers
- Inspect network activity — Chrome for Developers
함께 읽기
- Git 커밋과 브랜치를 게임 저장 지점처럼 이해하기
Git 커밋은 지금 파일 상태를 다시 찾을 수 있게 남기는 저장 지점이고, 브랜치는 원본 흐름을 건드리지 않고 다른 수정을 시험하는 별도 길입니다. AI에게 코드를 맡기기 전에 커밋을 만들면 문제가 생겨도 바뀐 부분을 비교하고 안전하게 되돌리기 쉽습니다.
- 파일 경로를 집 주소처럼 읽고 터미널에서 길을 잃지 않는 법
파일은 내용을 담은 문서이고 폴더는 파일을 묶는 공간입니다. 절대경로는 출발점부터 적은 전체 주소, 상대경로는 현재 폴더를 기준으로 적은 길 안내입니다. 터미널에서는 먼저 `pwd`로 현재 위치를 확인한 뒤 `ls`로 목록만 읽으면 엉뚱한 곳을 바꾸는 실수를 줄일 수 있습니다.
- npm 패키지와 의존성을 장보기 목록처럼 읽는 법
npm 패키지는 프로젝트에서 다시 쓸 수 있게 묶은 코드이고, 의존성은 내 프로젝트가 작동하려고 기대는 패키지입니다. package.json은 필요한 이름과 허용 버전을 적은 목록이며 package-lock.json은 실제 설치된 전체 버전을 기록하므로 둘을 함께 보관해야 같은 환경을 재현하기 쉽습니다.