selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

nodejsでdebuggerを動かす

モチベーション

typescript & vscode & jest環境でdebugするにあたって、debuggerを使っていたが、そもそもdebuggerって何よ。ってくらいの理解だったので、この機会に色々確認したかった。

debuggerの実行方法

https://nodejs.org/dist/latest-v6.x/docs/api/debugger.html そもそも debuggerとは、nodejs本体に搭載されている機能である。

console.log('hogehoge');
var a = "hogehoge";
debugger;
a = "1234";
console.log('hagehage');
$ node debug test.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in test.js:1
> 1 console.log('hogehoge');
  2 debugger;
  3
debug> repl
Press Ctrl + C to leave debug repl
> a
'hogehoge'

ということで、何の設定もしなくても動く。

debuggerのコマンド

watch

指定した変数の変化を追ってくれる

debug> watch('a');
debug> n
< hogehoge
break in test.js:2
Watchers:
  0: a = undefined

  1 console.log('hogehoge');
> 2 var a = "hogehoge";
  3 debugger;
  4 a = "1234";
debug> n
break in test.js:3
Watchers:
  0: a = "hogehoge"

  1 console.log('hogehoge');
  2 var a = "hogehoge";
> 3 debugger;
  4 a = "1234";
  5 console.log('hagehage');
debug> unwatch('a')
debug> n
break in test.js:4
  2 var a = "a";
  3 debugger;
> 4 a = "1234";
  5 console.log('hagehage');

list

Listはソースコードを、実行中の部分から前後5行の範囲内で表示してくれる。

debug> list(1)
> 1 console.log('hogehoge');
  2 var a = "hogehoge";
debug> list(5)
> 1 console.log('hogehoge');
  2 var a = "hogehoge";
  3 debugger;
  4 a = "1234";
  5 console.log('hagehage');

とりあえず、普通に使う分には把握した気がする。