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

  • View
    2.394

  • Download
    0

  • Category

    Software

Preview:

Citation preview

誰も教えてくれなかった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 の最初の行で停止

- 挙動がおかしいアプリでどこが原因がわからないときに有効

- もちろん途中で好きな場所にブレークポイントを設定してもよい

条件付きブレークポイントの設定

設定したブレークポイントを右クリック- ブレークポイント・プロパティ- 条件の有効化- 条件式

ご視聴ありがとうございました

ご質問?ご批判?

Recommended