Node.js 사용자의 설문조사와 논의에서 작성 중인 모듈과 애플리케이션을 이해하고 디버깅하기 위해
더 좋은 도구와 API가 필요하다는 요구를 계속 들어왔습니다. 사실 작년 Node.js 재단의 설문조사에서
개발자들과 기술 리더들로부터 가장 많이 받았던 요청은 더 좋은 도구였습니다.
이러한 피드백에 기반을 둔 커뮤니티의 기여와 협업으로 지난 몇 년간 다음과 같은 여러
실험적인 진단 API와 도구가 Node에 포함되거나 Node.js 재단에 도입되었습니다.
- async_hooks는 비동기 경계를 넘어 컨텍스트를 공유합니다.
- Inspector와 node-inspect로 단계를 진행해보고 프로파일링을 할 수 있습니다.
- Trace Controller로 V8과 Node에서 트레이스 정보를 모으거나 스트리밍합니다.
- node-report와 llnode는 포스트모템 분석을 합니다.
앞으로 몇 달 동안 이 프로젝트의 안정성을 높이면서 사용자들의 피드백과 도움을 받아 실험 상태에서
벗어나기를 바라고 있습니다. nodejs GitHub 조직에서 diag-agenda, tracing,
inspector 라벨을 검색하고 Diagnostics WG에서 이슈를 살펴보면 현재 진행 중인 작업과
참여할만한 부분을 알 수 있습니다.
레거시 V8 디버거를 교체할 Inspector
예전 구현체를 단계적으로 제거해야 한다는 필요성에 따라 새로운 구현체가 사용자의 요구사항을 맞출 수 있도록
개선하고 완성하는데 집중할 수 있습니다. 특히 몇 달 이내에 Inspector가
실험 상태를 벗어남에 따라
V8과 Node의 레거시 디버거 API는
폐기 예정이 될 것이고 새로운 Inspector
API가 있으므로 결국 제거될 것입니다.
이 변경사항의 중요성을 고려해서 레거시 인터페이스를 사용하는 사용자들이 준비할 수 있도록 최대한 빨리
폐기 예정 경고를 추가하기로 했습니다. 그래서 Node 7.7.0부터 node --debug
를 실행하면(또는
비슷한 기능은 --debug-brk
와 --debug-port=12345
) stderr로
폐기 예정 경고가 출력될 것입니다. 이 메시지를 보지 않으려면 --no-deprecation
플래그로
node를 시작하면 됩니다.
차후 디버깅을 하려면 node --inspect
나 --inspect-brk
를 사용해서 새로운
Inspector API를 활성화할 수 있습니다. 인기 있는 많은 에디터와 도구는 이미
Node 6 이상부터 이 API를 자동으로 지원하고 있습니다.
또한, 보통 node debug myscript.js
로 실행하는 Node 내장 CLI 디버거는 이제(7.6.0+)
Inspector에 기반을 둔 같은 기능으로 강화되었고 이는 node inspect myscript.js
로
호출할 수 있습니다. node inspect
가 있으므로 node debug myscript.js
는 결국은
제거될 것입니다.
시도해 보세요!
--inspect
와 Inspector를 사용해보려면 디버깅 가이드 문서를 읽어보세요.
항상 그렇지만 특히 이번 변경과정에서는 Node.js 런타임과 모듈에서 필요한 정보를 포함해서 기존 및
신규 도구와 API에서 정보를 얻는 경험에 대해 피드백을 받고 싶습니다. 논의할 부분이 있으면
Diagnostics WG에 이슈를 등록하고 코드를 기여하고 싶다면 nodejs/node에 PR을 올려주세요.