Node.js 프로세스를 실행할 때 node 명령어 앞단에 --inspct 옵션을 넣어주면 V8 Inspector가 활성화됩니다. Node.js 프로세스가 실행되면 크롬 브라우저에서 chrome://inspect로 이동한 다음 Remote Target 목록에서 실행 중인 Node.js 프로레스를 선택해 해당 프로세스를 디버깅 할 수 있습니다.
하지만 로컬 환경에서 리눅스와 같은 개발 환경에 배포된 Node.js 프로세스를 디버깅하고 싶을 때는 원격으로 개발 서버에 접근하는 추가적인 작업이 필요합니다. 아래 Node.js 디버깅 가이드 공식 문서를 참조하여 원격 디버깅을 해보았습니다.
node --inspect server.js
Debugger listening on ws://127.0.0.1:9229/b2b3533a-d49e-491b-b914-561d2f841d39
For help, see: https://nodejs.org/en/docs/inspector
node 명령어 앞단에 --inspct 옵션을 넣어주어 V8 Inspector를 활성화시킨 상태로 Node.js 프로세스를 실행시켜줍니다. 프로세스가 실행되면서 디버거가 디버깅 클라이언트를 localhost:9229에서 수신 대기합니다. --inspct 외 다른 포트 설정 옵션을 지정해 주지 않으면 기본 9229 포트가 설정됩니다.
ssh -L 9221:localhost:9229 ubuntu@remote.example.com
터미널에서 ssh -L 명령어를 실행시켜 로컬 컴퓨터 localhost:9221에서 원격 컴퓨터 localhost:9229로 들어온 요청을 수신 받습니다.
크롬 브라우저에서 chrome://inspect로 이동하여 Configure 탭에서 SSH 터널링 연결해 준 로컬 컴퓨터의 host:port를 입력해 주어 로컬 컴퓨터에서 원격 컴퓨터에서 실행된 Node.js 프로세스를 디버깅할 수 있습니다.
설정 완료 후 메인 페이지 Remote Target에 원격 Node.js 실행 파일 경로가 띄어지고 inspect로 이동하면 힙 메모리 측정 등 원격 Node.js 프로세스를 프로파일링 할 수 있습니다.