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 라이브러리 등)
'더이상 하지 않는 Backend - NodeJS > Node-Express 개론(완)' 카테고리의 다른 글
[O'REILLY] Node & Express - 21장 : 사이트 오픈 (완) (0) | 2023.04.21 |
---|---|
[O'REILLY] Node & Express - 19장 : 서드파티 API (0) | 2023.04.21 |
[O'REILLY] Node & Express - 18장 : 보안 처리 -2(인증) (1) | 2023.04.17 |
[O'REILLY] Node & Express - 18장 : 보안 처리 (0) | 2023.04.17 |
[O'REILLY] Node & Express - 17장 : 정적 콘텐츠 (0) | 2023.04.13 |
댓글