> 웹 프론트엔드 > JS 튜토리얼 > nodejs 디버깅을 활성화하는 방법은 무엇입니까? nodejs 프로그램을 디버깅하는 방법은 무엇입니까?

nodejs 디버깅을 활성화하는 방법은 무엇입니까? nodejs 프로그램을 디버깅하는 방법은 무엇입니까?

青灯夜游
풀어 주다: 2022-01-20 19:55:03
앞으로
5217명이 탐색했습니다.

nodejs 프로그램을 디버깅하는 방법은 무엇입니까? 다음 글에서는 nodejs 디버깅 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!

nodejs 디버깅을 활성화하는 방법은 무엇입니까? nodejs 프로그램을 디버깅하는 방법은 무엇입니까?

개발자는 애플리케이션을 개발하는 과정에서 개발 편의성과 버그 해결을 위해 프로그래밍 언어의 디버깅 기능에 의존해야 하는 경우가 많습니다. 일반적으로 이 작업을 완료하려면 강력한 IDE의 디버깅 기능을 사용해야 합니다. nodejs도 예외는 아닙니다.

오늘은 node 프로그램 디버깅 방법을 자세히 소개하겠습니다.

Enable nodejs 디버깅

아직도 우리가 전에 얘기했던 koa 프로그램을 기억하시나요? 이 기사에서는 nodejs 디버깅을 시작하기 위한 예로 간단한 koa 서버 프로그램을 사용합니다.

먼저 간단한 koa 서비스 app.js를 살펴보겠습니다.

const Koa = require('koa');
const app = module.exports = new Koa();

app.use(async function(ctx) {
  ctx.body = 'Hello World';
});

if (!module.parent) app.listen(3000);
로그인 후 복사

위 프로그램은 포트 3000을 열고 http 서비스를 설정합니다. 요청이 이루어질 때마다 hello World가 반환되며 이는 매우 간단합니다.

위 프로그램을 실행하려면 node app.js를 실행해야 합니다. 그러면 app.js가 실행되지만 디버깅은 활성화되지 않습니다.

디버그하는 방법?

--inspect 매개변수를 추가해야 합니다:

node --inspect app.js
로그인 후 복사
로그인 후 복사

위 코드는 nodejs의 디버깅 기능을 활성화합니다.

출력을 살펴보겠습니다.

Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a
For help, see: https://nodejs.org/en/docs/inspector
로그인 후 복사

결과는 두 가지를 말해줍니다. 첫 번째는 디버거가 수신하는 포트입니다. 기본적으로 127.0.0.1의 포트 9229가 열립니다. 그리고 차별화를 위해 고유한 UUID를 할당했습니다.

두 번째로 nodejs에서 사용하는 디버거가 Inspector라는 점을 알려드립니다.

Inspector는 nodejs 8 이후에 도입되었습니다. nodejs 7 이전이라면 레거시 디버거가 사용됩니다.

디버깅의 보안

디버거가 nodejs 실행 환경에 연결되어 있으면 악의적인 공격자가 있으면 악의적인 공격자가 nodejs 환경에서 임의의 코드를 실행할 수 있습니다. 이는 우리 프로그램에 큰 보안 위험을 가져올 것입니다.

그래서 우리는 디버깅의 안전에 주의를 기울여야 합니다. 일반적으로 원격 디버깅은 권장되지 않습니다.

기본적으로 --inspect는 127.0.0.1에 바인딩되어 있으며 로컬 프로그램만 액세스할 수 있도록 허용합니다. 그리고 로컬로 실행되는 모든 프로그램에는 프로그램을 디버깅할 수 있는 권한이 있습니다.

디버그 프로그램을 외부 프로그램에 노출하려면 원격 시스템이 원격 디버깅을 수행할 수 있도록 시스템의 외부 IP 주소 또는 0.0.0.0(모든 주소, 제한 없음을 의미)을 지정할 수 있습니다.

안전한 원격 디버깅을 하려면 어떻게 해야 할까요?

먼저 로컬 디버깅을 활성화해야 합니다.

node --inspect app.js
로그인 후 복사
로그인 후 복사

그런 다음 SSH 터널을 구축하여 로컬 9221 포트를 원격 서버의 9229 포트에 매핑할 수 있습니다.

ssh -L 9221:localhost:9229 user@remote.example.com
로그인 후 복사

이런 방식으로 로컬 9221에 연결할 수 있습니다. 포트.원격 디버깅.

nodejs 디버깅에 WebStorm 사용

JetBrains에서 제작한 WebStorm은 nodejs 개발을 위한 강력한 도구라고 할 수 있습니다. WebStorm에는 자체 디버그 옵션이 있습니다. 이 옵션을 활성화하면 백그라운드에서 활성화됩니다. :

WebStorm 디버깅 사용은 IDEA를 사용하여 Java 프로그램을 디버깅하는 것과 유사하므로 여기서는 자세히 설명하지 않겠습니다.

디버깅을 위해 Chrome devTools 사용

디버깅을 위해 Chrome devTools를 사용하기 위한 전제 조건은 --inspect 모드를 켜는 것입니다.

chrome에 chrome://inspect를 입력하세요.

Chrome 검사 인터페이스를 볼 수 있습니다. 이미 검사가 활성화된 nodejs 프로그램이 로컬에 있다면 원격 대상에서 직접 볼 수 있습니다.

디버깅하려는 대상을 선택하고 검사를 클릭하여 Chrome devTools 디버깅 도구를 엽니다.

프로그램을 프로파일링하고 디버그할 수 있습니다.

여기서는 디버깅에 중점을 두고 있으므로 소스 열로 이동하여 디버깅하려는 프로그램의 소스 코드를 추가하세요.

중단점을 추가하여 디버깅을 시작하세요. Chrome의 웹 측에서 js를 디버깅하는 것과 동일합니다.

디버깅을 위해 node-inspect 사용

실제로 nodejs에는 CLI 디버깅 도구인 node-inspect라는 디버깅 도구가 내장되어 있습니다. 그것을 사용하는 방법을 보자.

저희는

node inspect app.js

< Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in app.js:1
> 1 const Koa = require(&#39;koa&#39;);
  2 const app = module.exports = new Koa();
  3 
debug>
로그인 후 복사

nodespect를 직접 사용하여 두 가지 작업을 수행합니다. 첫 번째는 node --inspect app.js를 실행하는 서브루틴을 생성하는 것이고, 두 번째는 기본 프로그램에서 CLI 디버깅 창을 실행하는 것입니다.

이 CLI 디버거는 몇 가지 매우 유용한 명령을 제공합니다.

1, Stepping

  • cont, c: 계속 실행
  • next, n: 다음 단계로 이동
  • step, s: Step in
  • out, o: 밖으로 나가기
  • pause: 실행 중인 코드를 일시 중지

2, Breakpoints

  • setBreakpoint(), sb(): 현재 줄에 중단점 설정
  • setBreakpoint(line), sb(line): 지정된 줄에 중단점 설정
  • setBreakpoint('fn()'), sb(… ) : 지정된 함수에 중단점을 설정합니다
  • setBreakpoint('script.js', 1), sb(...): 지정된 스크립트 파일에 중단점을 설정합니다
  • clearBreakpoint('script.js', 1), cb (...): 파일에서 중단점 지우기

3, Information

  • backtrace, bt: 현재 실행 프레임의 역추적 정보 인쇄
  • list(5): 전후 5줄 나열 소스 코드
  • watch(expr): 감시 표현식 추가
  • unwatch(expr): 감시 표현식 삭제
  • watchers: 모든 감시자 나열
  • repl: repl 표현식 열기
  • exec expr: 위를 통해 표현식 실행

명령을 사용하면 CLI에서 더 복잡한 디버깅 활동을 수행할 수 있습니다.

기타 디버그 클라이언트

위에서 언급한 것 외에도 vscode, Visual Studio, Eclipse IDE 등을 사용하여 nodejs를 디버그할 수도 있지만 여기서는 자세히 소개하지 않습니다.

관심 있는 친구들이 스스로 탐색할 수 있습니다.

노드 관련 지식을 더 보려면 nodejs 튜토리얼을 방문하세요! !

위 내용은 nodejs 디버깅을 활성화하는 방법은 무엇입니까? nodejs 프로그램을 디버깅하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿