Node.jsをデバッグオプションでデバッグしてみる

Pocket
LINEで送る

前にnode-inspectorを使ってのデバッグ方法を書いたけど、node-inspectorをバッググランドで起動させたり、デバック用のポート(例:http://localhost:8080/debug?port=5858)にアクセスするとか面倒だったのNode.jsのデバッグオプションを使ってgdbライクにデバッグしてみました。
※サンプルはお絵描きアプリです。

まずは、ブレークさせたいところに「debugger;」を追記

socket.on('down', function(x, y, color) {
    debugger;
    socket.broadcast.emit( 'downData', x, y, color );
});

次に、debugオプションを使用してアプリを起動

$ node debug server.js
< debugger listening on port 5858 connecting... ok debug>

この状態だとまだアプリの起動までいってない状態。恐らくserver.jsの1行目とかで停止しているみたい。

動かすために、cコマンドを入力

debug>c
< info: socket.io started < サーバーが起動しました: http://localhost:3000/

これでサーバが起動したので実際にアプリを動かしてみる。

そうするとコンソール画面で停止している!

break in server.js:35
33 //———————————————
34 socket.on(‘down’, function(x, y, color) {
35 debugger;
36 socket.broadcast.emit( ‘downData’, x, y, color );
37 });

nextコマンドも使えます。もちろん、stepも。

debug> n
break in server.js:36
34 socket.on(‘down’, function(x, y, color) {
35 debugger;
36 socket.broadcast.emit( ‘downData’, x, y, color );
37 });
38

次は値を見たくなるけど、そこはgdbとはちょっと違います。
まず、replコマンドでデバッグモードに移行する。あとは、見たい変数名を直打ちすればOK。

debug> repl
Press Ctrl + C to leave debug repl
> x
727
> y
286
> color
‘#000000’
debug> c

helpコマンドで他のデバッグコマンドを見れます。

debug> help
Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version
debug>

inspectorの方がGUIで見やすいけど、gdb好きだからこっちの方がいいかも。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください