320x100
320x100

--inspect 

: NodeJS 8.0 부터 v8-inspector를 NodeJS 프로그램에서 실행하는 옵션

: --debug 옵션 대신 이 옵션을 사용함으로써 프로그램 실행중 디버깅을 할 수 있음

: 작성한 NodeJS 프로그램을 디버그 모드로 실행할 수 있음

 

- 공식문서

: https://nodejs.org/ko/docs/guides/debugging-getting-started/

 

디버깅 - 시작하기 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

 

사용법

1) 로컬에서 인스펙트 모드로 NodeJS 실행

node --inspect app.js

 

2) 크롬 브라우저의 chrome://inspect 로 접속하여 아래 사진과 같이 나와있는 Target의 inspect를 클릭

 

3) 열린 크롬 개발자 도구의 탭에서 소스를 디버깅하거나, 메모리 힙 스냅샷을 생성할 수 있다

 

 

 

 

 

--inspector로 원격 서버 디버깅하기

1) 리눅스 등 서버에서 프로그램을 실행

node --inspector=0.0.0.0:9229 app.js

 

2) 크롬 inspect 페이지에서 configure 클릭

 

3) 서버의 IP와 포트 입력 후 Done을 눌러 저장

 

4) Remote Target에 입력한 서버에서 실행중인 NodeJS 주소가 나옴

 

 

 

 

--inspector로 힙 메모리 스냅샷 생성하고 읽기

1) 위 두 방법대로 진행 후 크롬 개발자 도구에서 Memory 탭 진입

 

2) 아래 화면에서 실행중인 프로그램의 실시간 힙 메모리 사용량이 나오는데, Take Snashot을 누르면 힙 스냅샷이 생성됨 (왼쪽 화면의 Profiles 아래에 나옴)

: 생성된 힙 스냅샷은 save를 눌러 따로 저장할 수 있음

 

3)  일정 시간 혹은 기준을 간격으로 스냅샷을 여러개 생성 후 비교

 

 

 

comparison 항목 설명

- constructor

: 개체

 

- New 

: 기준 스냅샷에서 새로 생성된 객체의 수

 

- Deleted

: 비교 스냅샷 시점에서 기준 스냅샷의 시점과 비교하여 삭제된 객체 수

 

- Delta

: New - Deleted 값 (증분값)

: 기준 스냅샷 시점에서 존재하는 객체수 - 비교 스냅샷 시점에서 삭제된 객체수 

 

- Alloc.Size

: 기준 스냅샷에서 해당 개체가 차지하는 메모리 용량 (Byte)

 

- Freed.Size

: 비교 스냅샷 시점에서 기준 스냅샷의 시점과 비교하여 반환된 메모리 용량 (Byte)

 

- Size Delta

: Alloc - Freed (증분 용량?)

: 기준 스냅샷 시점에서 차지중인 용량 - 비교 스냅샷 시점에서 반환된 용량

 

 

 

 

 

 

Refference

 

Node.js의 v8-inpector 디버깅 :: Outsider's Dev Story

Node.js를 디버깅하는 방법에 대해서 몇 번 글을 썼다. * [node.js 디버깅에 ndb 사용하기](https://blog.outsider.ne.kr/538) * [Node.js의 디버거 devtool과 v6의 네이티브 v8_inspector 지원](https://blog.o...

blog.outsider.ne.kr

300x250
728x90