Node Js Debug
node js를 디버깅 할 수 있는 방법은 여러가지가 있습니다.
현재 개발환경은 node js 4.x이므로 V8 debugger protocol를 선택합니다. Visual Source Code를 이용할 수도 있습니다.
node js에 기본으로 포함된 debugger를 사용해보도록 하겠습니다. 자세한 사용법 문서는 여기를 참조하세요.
기본 명령은 다음과 같습니다.
- cont 또는 c - 계속 실행
- next 또는 n - 다음 라인으로 이동
- step 또는 s - step in
- out 또는 o - step out
- pause - 일시 정지
브레이크는 debuger를 코드 사이에 삽입하거나 다음의 명령을 사용합니다.
- sb() - 현재라인에 브레이크 설정
- sb(line) - line 번째에 브레이크 설정
- sb(…) - 현재 속해 있는 함수 또는 스크립트의 첫라인에 브레이크 설정
- cb(…) - 현재 속헤 있는 스크립트의 첫라인에 브레이크를 삭제
이해를 위하여 먼저 디버그할 app.js를 생성해보도록 하겠습니다.
x = 5;
setTimeout(() => {
debugger;
console.log('world');
}, 1000);
console.log('hello');
이제 디버깅 모드로 실행해보록 합니다.
$ node debug app.js
< Debugger listening on port 5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 x = 5;
2 setTimeout(() => {
3 debugger;
debug>
디버그 포트가 열리고 첫번째 라인에 브레이크가 걸립니다. “>” 가 현재 실행 위치입니다. debug> 프롬프트에 next 명령을 내립니다. 다음과 같이 2번째 라인으로 이동한 것을 볼 수 있습니다. 그리고 cont 명령을 입력하면 setTimeout을 1초후에 실행하도록 설정하고 world를 출력한 다음 1초 후에 setTimeout 내부의 debugger에서 정지합니다.
debug> next
break in app.js:2
1 x = 5;
> 2 setTimeout(() => {
3 debugger;
4 console.log('world');
debug> cont
< hello
break in app.js:3
1 x = 5;
2 setTimeout(() => {
> 3 debugger;
4 console.log('world');
5 }, 1000);
debug>
이번에는 repl 명령을 이용하여 x에 설정된 값을 살펴보도록 합니다.
debug> repl
Press Ctrl + C to leave debug repl
> x
5
>
watcher를 사용할 수도 있습니다. 명령은 다음과 같습니다.
- watch(expr) - 표현식을 watch 목록에 추가
- unwatch(expr) - 표현식을 watch 목록에서 제거
- watchers - 등록된 표현식의 목록