Node.js에서 binding.pry같이 디버깅하는 방법

Posted by negabaro kim on Saturday, November 28, 2020 Tags: node.js   2 minute read

Node.js에서 ruby의 binding.pry와 비슷한 방식으로 디버깅하는 방법에 대해 알아보자.

Node.js v7.7.2 Documentation Debugger부터 추가된 debugger을 이용하면 된다.

사용방법

debugger의 사용방법은 아래와 같다.

debugger;추가

Array.from(Array(3).keys()).forEach(function(key){
 debugger; // 브레이킹 해줄 부분에 추가
 console.log(key)
})

node실행

node 실행시 debug옵션을 붙여서 실행해준다.

node debug debugger.js

cont커맨드 실행

cont커맨드를 이용해 브레이킹 포인트로 이동이 가능

debug> cont
break in test.js:2
  1 Array.from(Array(3).keys()).forEach(function(key){
> 2   debugger;
  3   console.log(key)
  4  })

repl커맨드 실행

repl커맨드를 실행하면 대화모드로 들어가 해당 코드에 있는 메소드들의 상태를 확인할 수 있다.

debug> repl
Press Ctrl + C to leave debug repl
> key
0
debug> cont
< 0
break in test.js:2
  1 Array.from(Array(3).keys()).forEach(function(key){
> 2   debugger;
  3    console.log(key)
  4  })
debug> repl
Press Ctrl + C to leave debug repl
> key
1

빠져나올때는 Ctrl + C.exit

느낀점

binding.pry에 비해서는 아직 많이 불편해보이지만 디버깅시 유용하게 쓸 수 있을거 같다.

메모

브라우저에서도 가능

chrome에서 window: Ctrl+Shift+I mac: cmd + opt + i 로 dev tools을 띄어줌

그 후에 특정 액션 실행하면 해당 액션에 기술된 debugger코드로 브레이킹 포인트 됨

정확히는 source탭의 해당 코드가 있는 js코드로 이동

dev tools을 띄어주지 않으면 실행되지 않으므로 주의하자.

테스트시

테스트시에도 사용이 가능하다고 mocha의 경우 아래와 같이 실행해주면 된다.

mocha debug <file-name>