진단 워킹그룹 업데이트 - 새로운 많은 도구, 예전 도구의 퇴출

Node.js 사용자의 설문조사와 논의에서 작성 중인 모듈과 애플리케이션을 이해하고 디버깅하기 위해 더 좋은 도구와 API가 필요하다는 요구를 계속 들어왔습니다. 사실 작년 Node.js 재단의 설문조사에서 개발자들과 기술 리더들로부터 가장 많이 받았던 요청은 더 좋은 도구였습니다.

이러한 피드백에 기반을 둔 커뮤니티의 기여와 협업으로 지난 몇 년간 다음과 같은 여러 실험적인 진단 API와 도구가 Node에 포함되거나 Node.js 재단에 도입되었습니다.

  • async_hooks는 비동기 경계를 넘어 컨텍스트를 공유합니다.
  • Inspectornode-inspect로 단계를 진행해보고 프로파일링을 할 수 있습니다.
  • Trace Controller로 V8과 Node에서 트레이스 정보를 모으거나 스트리밍합니다.
  • node-reportllnode는 포스트모템 분석을 합니다.

앞으로 몇 달 동안 이 프로젝트의 안정성을 높이면서 사용자들의 피드백과 도움을 받아 실험 상태에서 벗어나기를 바라고 있습니다. 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을 올려주세요.