[node.js]node-inspectorを使ってdebugする(express-mvc-bootstrap)

ConsoleでDebugする方法もあるらしい。今回はnode-inspector(GitHub)をInstallしてGoogle Chromeでremote debugする方法を試してみた。

こちらから参照されている動画を見れば、どんな感じか分かる。

Node Inspector - Node.js Debugger

 

npmでinstallすれば簡単。node.js, npmのInstallに関しては"Related Posts"を参照。

# npm install -g node-inspector

debuggerの起動

# node-inspector

visit http://0.0.0.0:8080/debug?port=5858 to start debugging

通常はこれで(別consoleを起動して)debug optionを付けてAppを起動 -> Google Chromeから
http://192.168.0.xxx:8080/debug?port=5858
に接続すればdebug出来る(詳細は上の動画から)。

でもexpress-mvc-bootstrapを利用してAppを構築していると、起動自体がnodeを使わない。Official Documentを読んでみると

The V8 debugger can be enabled and accessed either by starting Node with the --debug command-line flag or by signaling an existing Node process with SIGUSR1.

と書いてあるので、"SIGUSR1"というSignalを送ればいいらしい。ということで、app.jsのboot methodに次のcodeを埋め込んでみた。

process.kill(process.pid, 'SIGUSR1');

で起動してみると・・・

# ../node_modules/express-mvc-bootstrap/eb server

Launching bootstrap from:  /opt/node_projects/mvc_test
Script directory:  /opt/node_projects/node_modules/express-mvc-bootstrap/scripts
Hit SIGUSR1 - starting debugger agent.
debugger listening on port 5858

Launching cluster mode on port: 3000

出来た!

AppControllerのrouterにbreakpointを設定すると、ちゃんと止まる。

ただし"server" optionを付けないと下記errorになる。V8のBug?

Failed to open socket on port 5858, waiting 1000 ms before retrying

 

ExpressのOfficial DocumentではNODE_ENVを設定して、起動するやり方が紹介されているけど、(まだ)よく分からない。

 

< Related Posts >

[node.js]MVCな開発がしたくて「express-mvc-bootstrap」をInstallしてみた
node.js, socket.ioをInstallしてWebSocketを試す(Install編)