誰も教えてくれなかった
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=1
JavaDebugOptions=transport=dt_socket,server=y,suspend=n,
address=8000
JavascriptEnableDebug=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の最初の行で停
止
- 挙動がおかしいアプリでどこが原
因がわからないときに有効
- もちろん途中で好きな場所にブ
レークポイントを設定してもよい
条件付きブレークポイントの設定
設定したブレークポイントを右クリック
- ブレークポイント・プロパティ
- 条件の有効化
- 条件式
ご視聴ありがとうございました
ご質問?ご批判?

XPagesDay2015 - 誰も教えてくれなかったデバッグ方法