常田です。
OpenWhiskを開発していくうえではDebugも必要になってくるかなと思います。OpenWhisk-Debuggerというプロジェクトでデバック機能を提供しています。Node.jsもPythonでも利用することが出来ます。Node.jsの場合にはNode Inspectorを利用してChromeブラウザでデバック出来ます。先日には npm のレポジトリにも入ったので多分 npm install -g openwhisk-debugger
で導入が出来ます。ここではGitからCloneして利用してみたいと思います。
環境
私はMacを利用しており、Node.jsについては nodebrew を使って管理をしています。利用しているバージョンは以下のとおりです。
$ node -v
v6.5.0
$ npm -v
3.10.3
導入
導入自体は難しくなく以下のコマンドを実行すれば使えます。
$ git clone https://github.com/openwhisk/openwhisk-debugger.git
$ cd openwhisk-debugger/client
$ ./wskdb
wskdbを最初に起動すると自動的に導入が始まります。次回以降は普通に起動してきます。
使い方
- https://github.com/openwhisk/openwhisk-debugger/tree/master/client
早速使ってみたいと思います。結構普通に操作が便利なので普段の利用としてもよいかと思います。
Inspect
InspectではActionを表示することが出来ます。シーケンスの場合にも見ることが出来るので便利ですね。
(wskdb) inspect s1
Attached = no
This is an action sequence
a1 => a2
ok
(wskdb) inspect a1
Attached = no
This is a nodejs:6 action
function main(params) {
return { "message": "a1(" + params.message +")" };
}
ok
(wskdb) inspect a2
Attached = no
This is a nodejs:6 action
function main(params) {
return { "message": "a2(" + params.message +")" };
}
ok
list
listコマンドではActionを一覧で見ることが出来ます。AttachしてるActionがあればその部分も分かるようになります。
(wskdb) list
Available actions:
s1
a2
a1
Atattch
デバックする上では atattch をしておく必要があります。
(wskdb) attach a1
Attaching to a1
Creating action trampoline
ok
Invoke
実際に実行します。
(wskdb) invoke a1
Debug session requested
stderr: Debugger listening on [::]:5858
実行するとそのままChromeが起動してきます。node inspectorを利用した
画面の右側のペインの矢印をクリックすると進みます。必要があればブレイクポイントを利用して動作を確認します。
次にはパラメータを付けて実行してみます。
(wskdb) invoke a1 -p message "good"
Debug session requested
stderr: Debugger listening on [::]:5858
スクリーンショットが取れませんでしたが、マウスポインタを合わせればその変数が何が入っているかを知ることが出来ます。
実行前にプログラムの修正も可能です。ブラウザ上で変更を行い「保存」してから実行します。
(wskdb) invoke a2 -p message bood
Debug session requested
stderr: Debugger listening on [::]:5858
実行結果は
{
"debug": "a2(bood)"
}
Debug session complete
ok
のように書き換えたものになります。
この内容で良い場合には内容を確認し(diff)その結果を反映(publish)することが出来ます。
(wskdb) diff a2
Index: wskdb
===================================================================
--- wskdb
+++ wskdb
@@ -1,3 +1,3 @@
function main(params) {
- return { "message": "a2(" + params.message +")" };
+ return { "debug": "a2(" + params.message +")" };
}
\ No newline at end of file
ok
(wskdb) publish a2
Your changes are now live
ok
(wskdb) inspect a2
Attached = yes
This is a nodejs:6 action
function main(params) {
return { "debug": "a2(" + params.message +")" };
}
ok
まとめ
先日から試していてようやく起動できたのでもしかするとライブラリなどの条件が色々問題があったのかもしれませんが npm に登録された際に package.json がアップデートされたこともあり動くようになりました。リモートサーバ上でプログラムが実行されることもありどの様に動きを見ていけばよいかわからないと困りますので今回の方法が参考になればと思います。