[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 5858Launching 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 >