小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


node-inspectorでnode.jsをデバッグしてみる


2011.12.02追記

最新版で動作するようエントリを修正しました。

はじめに

このエントリでは、Ubuntu 10.10上にnode-inspectorとnode.jsをインストールし、node.jsをデバッグ(ステップ実行)する手順について書いています。このエントリを書くにあたり、以下のエントリを参考にさせていただきました。

node-inspectorは、サーバサイドのJavaScriptをブラウザ上(Webkit系のブラウザ)でデバッグできるようにしてくれるライブラリです。

node-inspectorってのがあって、これがあると
chrome上(webkit系ならいけるらしい)でクライアントサイドのjsデバッグみたいに
サーバサイドのjsもデバッグできる。
でもnode.js0.3以上がないと動かないので注意。
node.jsでのデバッグ方法 - すにぺっと はてなブックマーク - node.jsでのデバッグ方法 - すにぺっと

動作環境
  • VirtualBox 4.0.4 + Ubuntu 10.10
  • node.js 0.4.0
  • node-inspector 0.1.6
  • Google Chrome 9.0.597.98
node.jsのインストール

node.jsのインストールに関しては、こちらのエントリを参照してください。

npmのインストール

node.jsのパッケージ管理システムnpmをインストールします。

curl http://npmjs.org/install.sh | sudo sh

>(中略)
>npm info preactivate npm@0.3.4
>npm info activate npm@0.3.4
>npm info postactivate npm@0.3.4
>npm info build Success: npm@0.3.4
>npm ok
>It worked

npmのインストールがうまくいかない場合は、こちらのエントリを参照してください。

node-inspectorのインストール

npmを使ってnode-inspectorをインストールします。現在の最新版である0.1.6を入れてみます。

sudo npm install node-inspector@0.1.6

>(中略)
>npm info build Success: node-inspector@0.1.6
>npm ok
サンプルコードを用意する

node.jsでのデバッグ方法 - すにぺっと はてなブックマーク - node.jsでのデバッグ方法 - すにぺっとに記載されているサンプルコードそのままですが、とりあえず/usr/local/src/testにtest.jsという名前で格納します。

var http = require('http');

var x = 0;
http.createServer(function (req, res) {
  x += 1;
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World ' + x);
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');
node-inspectorの起動

以下のコマンドでnode-inspectorが起動します。

node-inspector

>visit http://0.0.0.0:8080/debug?port=5858 to start debugging
node.jsデバッグモード

端末をもう1枚起動して、node.jsをデバッグモードで起動します。

cd /usr/local/src/test
node --debug test.js

>debugger listening on port 5858
>Server running at http://127.0.0.1:8124/
デバッグしてみる

1. Google Chromeを起動して、http://127.0.0.1:8080/debug?port=5858にアクセスします。Google ChromeのInspectorが起動するので、さきほど作成したtest.jsを選択します。

2. test.js内にブレークポイントを設定します。行番号のあたりをクリックするとブレークポイントが設定できます。

3. Google Chromeのタブをもう1枚開き、http://127.0.0.1:8124/にアクセスします。すると、1枚目のタブでスクリプトがブレークポイントでストップして、ステップ実行することができるようになります。