誰も教えてくれなかったXPages のデバッグ方法
チームスタジオジャパン株式会社加藤 満
このセッションでカバーする内容
アプリケーションエラーや動作が「?」のときにどう対処するかを考える
対象- SSJS の古典的なデバッグとエラー制御- ログを取る- SSJS デバッガー (9.0 以降 )
エラーページの表示
基本中の基本!
print() と _dump()
print() と _dump()ともに変数に指定したオブジェクトをコンソールに表示する
ものだが何が違うのか?
print() と _dump()print() は基本的にどんなオブジェクト型にも対応するが、そ
のオブジェクトの toString() がコールされる- 例でみる jsonObject の [object Object] では役に立たない
_dump() は複数要素をもつオブジェクト( JSON や配列、 HashMap 、 Vector 値などなど)に有効
- サマリー情報だけでなく、それぞれのエントリーのすべての詳細データを書き出してくれる
try / catch /finally
try {
}catch(e) {
}finally {
}
評価コード
エラー発生後のコード
エラーの有無にかかわらず実行する後処理コード
var iconPath = "";try{var doc = viewEntry.getDocument();if(doc.hasEmbedded()){
iconPath = "/attachment.gif";}doc.recycle();}catch(e){} finally {return iconPath;}
var iconPath = "";var doc = viewEntry.getDocument();if(doc.hasEmbedded()){
iconPath = "/attachment.gif";}doc.recycle();return iconPath;
Commons のログ機能を使ってみる
logger クラスを使ってログ出力- com.ibm.commons.log クラスを拡張して console.log に出力
• < データディレクトリー >¥IBM_TECHNICAL_SUPPORT 内- SSJS から利用可能- notes.ini に HTTP_OSGI_ENABLE_CONSOLE_LOGGING=1
( 要サーバー再起動 )- プログラマブル {0} {1} {n} に変数を代入可能
まずは java コードから
Java の設計としてこの以下のコード追加- package 名はご自由に
SSJS
errorp() – エラーwarnp() – 警告infop() – 情報
API の詳細はhttp://tinyurl.com/XPagesLogMgrAPI
SSJS デバッガー
SSJS デバッガー
Domino Designer 9.0 以降Domino サーバー上でも Designer の HTTP からでも動作notes.ini
JavaEnableDebug=1JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000JavascriptEnableDebug=1- ※1 HTTP の再起動が必要- ※2 JavascriptEnableDebug は大文字小文字を正確に
本番環境のサーバーでは決して行わないでください
Domino Designer でのデバッグ構成
失敗
成功
ブレークポイントの設定
ソースパネル上の SSJS コードの設定にブレークポイントを
ダブルクリック!!!
デバッグの開始
XPage をプリビューすると ...
デバッグの操作- ステップイン (F5)- ステップオーバー (F6)- ステップリターン (F7)- 中断- 再開 (F8)- 終了 (Ctrl+F2)
- 「変数」タブで値を確認• 実行時のそれぞれのステップでのスコープ変数の値を確認するには特に有効• 値は確認するだけでなく、その場で変更することも可能
ブレークポイントに debugger ステートメントを利用する
debugger ステートメント
目的他の開発者とブレークポイントを共有する
注意点Notes/Domino 9.0 以降で有効
- 8.5.x 以前のバージョンではエラーが発生本番環境のコードではこのステートメントは削除しましょ
う!
「サーバーサイド JavaScript の最初の行で停止」オプション
すべての SSJS の最初の行で停止
- 挙動がおかしいアプリでどこが原因がわからないときに有効
- もちろん途中で好きな場所にブレークポイントを設定してもよい
条件付きブレークポイントの設定
設定したブレークポイントを右クリック- ブレークポイント・プロパティ- 条件の有効化- 条件式
ご視聴ありがとうございました
ご質問?ご批判?