본문 바로가기
더이상 하지 않는 Backend - NodeJS/Node-Express 개론(완)

[O'REILLY] Node & Express - 20장 : 디버깅

by VictorMeredith 2023. 4. 21.

디버깅 현실

1. 디버깅 원칙

- 디버깅은 보통 버그를 찾고 제거하는 작업이다.

- 디버깅에서 가장 중요한 것은 '제외' 이다. 문제의 원인에서 제외해가며 남는 것이 범인이다.

- 제외할 수 있는 것이 많을 수록 살펴봐야할 부분이 줄어든다.

 

2. 방법

- 코드 블럭을 주석처리하거나 비활성화해본다.

- TDD 방법론을 통해 개발하여 단위테스트를 모두 제외하면서 디버깅할 수 있도록 한다.

- 네트워크 트래픽을 분석해본다.

- 직접 실행 입력을 해보고 QA해본다.

- 버전관리를 통해 버그가 사라질 때 까지 앞뒤로 왔다리갔다리 하면서 테스트 해본다.

- 복잡한 다른 시스템을 제외하고 버그부분만 똑 떼서 모킹해서 테스트 해본다.

 

3. 제외가 모든 것의 답은 아니다. REPL 활용

- 브라우저의 콘솔을 열면 REPL이 열린다.

- 노드에서는 node 엔터 하면 REPL이 열린다.

- console.log(), console.error() 는 국룰이다. 당장 답이 안보이면 일단 찍어보고 시작하자.

 

4. 노드의 내장 디버거 활용

node inspect abc.js

- inspect 키워드를 활용하면 인스펙터 클라이언트를 살펴볼 수 있다.

- 서버에 GUI가 없는 환경에서 사용할 수도 있겠지만, 보통은 GUI를 쓴다. 사람은 시각적으로 봐야 이해한다.

 

5. 노드 인스펙터 클라이언트

- 웹서비스를 통해 노드 디버거를 사용할 수 있다.

node --inspect abc.js

- chrome://inspect 를 URL에 입력하면 DevTools가 보인다.

- Open dedicated DevTools for Node 를 클릭해서 Node.js -> file:// 을 클릭한다.

- 이후 앱 폴더를 확장하면서 breakpoint를 확인하면서 디버깅하면 된다.

- 함수 호출 안, 밖, 다음 으로 이동하면서 함수의 실행 하나하나를 확인할 수 있다.

- 콜 스택 확인을 통해 실행중인 함수의 콜링 구조를 이해할 수 있다.

 

 

- 로그 기반의 서드파티 디버깅 툴을 사용할 수도 있다. (debug 라이브러리 등) 

댓글