今回はデバッグのやり方について。ホントに大事。
コマンドラインでデバッグ
前回のnode.jsの環境をmacに導入して色々やってみたけど、コマンドラインでデバッグする事が出来る事が分かった。
こうすると、デバッグの画面が出てくる。
1 2 3 4 5 6 7 8 9 |
% node -debug hello.js Debugger listening on port 5858 connecting to port 5858... ok break in hello.js:1 > 1 console.log('hello'); 2 3 }); debug> |
debug> って書いてあるように、対話型のデバッガです。この時点で、参照したい変数とかを入力すると、その値が出てくるような感じ。
使えるコマンドは、こんな感じ。
c | コンティニュー(そのまま最後まで行く) |
---|---|
r | プログラムの先頭から再実行 |
n | 次のステップへ(ステップ実行) |
s | 関数内を実行(ステップイン) |
o | 関数内から抜け出す(ステップアウト) |
そしたら、とりあえずさっきの状態にnを押してEnterを押してみる。
1 2 3 4 5 6 7 |
debug> n < hello break in hello.js:3 1 console.log('hello'); 2 > 3 }); debug> |
はい、console.logでhelloが表示されて、3行目まで処理が進みましたね。これが原始的なやり方なんだと思います。一応sb(fileName, line)とか、cb(fileName, line)とかでブレークポイントも設定できるっぽいですが、ちょっと使いづらいですね。
node-inspectorを使おう
それに対して、node-inspectorを使うとエグいくらい簡単にデバッグ出来ます。具体的には、node-inspectorとChromeを用いてデバッグを行います。従って、必要なものは、node-inspectorのインストールとChromeのインストールです。
ここでは、node-inspectorのインストールを書きます。Chromeは適当にやっとく。
まず、githubに公開されているnode-inspectorをダウンロードしてくる。
https://github.com/node-inspector/node-inspector
そして、生み出されたディレクトリに行って、以下のコマンドを実行。
1 |
sudo npm install -g node-inspector |
これで、インストールはできるはずです。とりあえずこれができれば準備は整ったも同然。ここからやることは、node.jsのアプリケーションをデバッグ状態で起動して、その実行情報をローカルのwebに公開する。そこで公開された実行情報chromeから覗き見る、といった流れです。
まず、デバッグ状態で起動及びそれをローカルのwebに公開って部分をやります。コマンドはこんな感じ。まずはデバッグ状態で起動。
1 2 3 |
% node --debug hello.js debugger listening on port 5858 |
デフォルトのデバッグポートは5858なのですが、変えたければこうやって書ける。
1 |
% node --debug=5859 hello.js |
さっきからやってるhello.jsはコールバックとかないので、1行目でブレークしておきたい。そういうときは、こうやって書く。
1 |
% node --debug-brk=5859 hello.js |
次に、node-inspectorを起動し、localのwebに実行状態を公開する。
1 |
% node-inspector --web-port 8081 --debug-port 5859 |
これで、node-inspectorの起動完了。そしたら、chromeで、こちらのページにアクセス。
http://ホスト名:8081/debug?port=5859
そうすると、あら不思議、デバッグの画面が出てくる。スクリーンショット貼るのはだるいので、昔の攻略本にあった「あとは君の目で確かめてくれ!」って感じでよろしくお願いします。