モチベーション
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');
とりあえず、普通に使う分には把握した気がする。