リモートデバッガを使用する

このタスクについて

リモートデバッガを使用して、サーバーで稼働中の LotusScript エージェントのステップを行い、デバッグできます。デバッグするエージェントが、リモートデバッギングツールの起動時に稼働中である必要があります。

同じエージェントに複数のユーザーが接続してデバッグできます。しかし、デバッグを制御できるのは、一度に 1 ユーザーのみです。2 番目のユーザーは同じエージェントに接続することで制御を取得できます。この機能は、エージェントのデバッグ中に同僚の支援が必要な場合などに便利です。接続してサーバーエージェントをデバッグしてもらえるよう同僚に依頼すると、同僚は物理的にユーザーと同じ場所にいなくても支援を提供できます。ただし、同僚がサーバーに接続し、デバッグを開始した後に元のユーザーがサーバーのデバッグを続行しようとすると、「別のユーザーがエージェントに接続し、制御権を得ています。追加デバッグを行うには、再度接続を試行してください」というエラーが返されます。

リモートデバッガを使用する前に、次のステップを行ってください。

手順

  1. サーバーのリモートデバッグを有効化する。
  2. エージェントのリモートデバッグを有効化する。
  3. リモートデバッガを開始する。

タスクの結果

「スケジュールされた LotusScript エージェントをリモートでデバッグする」では、サーバーとエージェントでリモートデバッグを有効化した後のリモートデバッガの使用方法を定義します。

注: リモートデバッグは Release 6 で新しく追加されたメソッドです。

サーバーのリモートデバッグを有効化する

手順

  1. サーバーを開始する前に、サーバーの notes.ini ファイルで次の値を ServerTasks= list: に追加します。
    Rdebug

    サーバーがすでに稼働している場合、サーバーコンソールに次のコマンドを入力してリモートデバッグタスクを開始します。

    load rdebug

  2. サーバー文書の [サーバータスク] タブで、 [Remote Debug Manager] という名前のタブを選択します。このサーバーの [リモートデバッグを許可] を [有効] に設定します。
    ヒント: このフィールドを編集するには、サーバーへの管理アクセス権が必要です。
  3. サーバーでの rdebug タスクの実行の時間制限を [サーバーデバッグ終了] 設定に入力します。
    ヒント: この値を -1 に設定すると、タスクは永遠に実行を続けます。
  4. リモートデバッガを目標エージェントに接続するための時間を確保するために、エージェントを実行前に一時停止させる必要がある場合には、[待ちエージェントの開始時間] フィールドに時間間隔を入力します。(推奨)
  5. [ポート] - [インターネットポート] - [Remote Debug Manager] タブをチェックし、TCP/IP ポートステータスプロパティが有効に設定されていることを確認します。
  6. エージェントの実行権を持つユーザーとして自分自身がサーバーの [セキュリティ] タブのリストに含まれていることを確認します。
  7. サーバー文書を保存して閉じます。

エージェントのリモートデバッグを有効化する

手順

  1. [エージェント] インフォボックスの [基本] タブで、トリガーの [スケジュール] ラジオボタンを選択します。[スケジュール] をクリックします。

    [エージェントのスケジュール] ダイアログボックスが表示されます。

  2. [実行場所] リストボックスからサーバーを選択します。
  3. Stop ステートメントを現在のエージェントの Initialize イベントコードの先頭に追加します。Stop ステートメントは次のように機能します。
    • リモートデバッガタスクがサーバー上で動作していないか、有効ではない場合、このステートメントは何も行いません。エージェントの性能は影響を受けません。
    • リモートデバッガが動作していて有効である場合、サーバー文書の [サーバータスク] タブ - [Remote Debug Manager] タブで [待ちエージェントの開始時間] フィールドの値が指定されていれば、エージェントの実行をそこで指定された時間だけ一時停止します。これにより、エージェントの実行が始まる前に、リモートデバッガウィンドウでエージェントに接続する時間ができます。
    • リモートデバッガウィンドウが開かれ、エージェントに接続済みである場合、Stop ステートメントはブレークポイントと同様に動作し、エージェントの実行を停止します。
      ヒント: エージェントコードの先頭に次のステートメントを追加して、エージェントが実行準備中であることをコンソールにブロードキャストできます。
      Print "AgentName is about to start running****************"
  4. [エージェント] インフォボックスの [セキュリティ] タブで、[リモートデバッグを許可] を選択します。

リモートデバッガを開始する

手順

  1. デバッグが必要な特定のエージェントを実行するには、次のいずれかの操作を行います。
    • [エージェント] インフォボックスの [基本] タブで [スケジュール] ボタンをクリックして、エージェントの実行頻度を高くします。[エージェントのスケジュール] ダイアログボックスで、[エージェントの実行間隔] の時間の値を 0 に、分の値を 5 に変更します。

    • サーバーコンソールで次のコマンドを入力します。
      tell amgr run databaseName.nsf 'agentName'
  2. デバッグするエージェントがサーバーで実行中に、メニューから [ファイル] - [ツール] - [リモートデバッガ] を選択します。
    ヒント: print と stop ステートメントを Initialize イベントの先頭に追加した場合には、エージェントが実行中であることがわかります。print ステートメントにより、エージェントの実行が開始したタイミングと、stop ステートメントによりその実行が遅延されたタイミングがコンソールに出力されます。

    Domino Debugger 6 の Welcome ページが表示されます。

  3. メニューから [ファイル] - [デバッグ対象の選択] を選択します。

    [デバッグ対象の選択] ダイアログボックスが表示されます。

  4. エージェントを実行しているサーバーを [サーバー] リストボックスから選択し、[開く] をクリックします。

    サーバー上のデータベースの一覧が表示されます。

  5. エージェントを含むデータベースを選択し、[開く] を選択します。

    デバッグ対象のエージェントが現在実行中である場合には、[デバッグ対象] ボックスに表示されます。

  6. デバッグするエージェントを [デバッグ対象] リストから選択し、[開く] をクリックします。

    (Options) イベントを含む [スクリプトデバッガ] ウィンドウが表示されます。

スケジュールされた LotusScript エージェントをリモートでデバッグする

手順

  1. デバッグするエージェントコードをスクリプトペインに表示するには、エージェントまたはスクリプトライブラリ名を [オブジェクト] リストボックスから選択し、それをトリガするイベント名またはサブルーチンをデバッグペインの [イベント] リストボックスから選択します。

    スクリプトペインにコードが表示されます。スクリプトの実行がすでに開始されている場合は、次に実行されるコード行を指す黄色の矢印が表示されます。

  2. 次のいずれかのアクションボタンを使用して、コードをデバッグするモードを選択します。
    注: ブレークポイントを設定するには、実行前に、改ページしたい行をハイライトし、[ファイル] - [ブレークポイントの設定と消去] を選択するか、[F9] キーを押します。

    アクションボタン

    説明

    [Break]

    エージェントコードの実行を、ループ内の行も含む、現在実行中の行で改ページします。デバッガは終了しません。[続行] をクリックして実行を再開できます。

    Continue

    スクリプトペインでコードを実行し、改行が見つかったときのみ停止します。エラー以外の場合には、エージェントコードは最後まで実行されます。

    ステップアウト

    デバッガでサブプログラム内のコードが実行中の場合に、サブプログラムを終了して呼び出し元のステートメントに戻ります。サブプログラムを呼び出したステートメントが現在のエージェントコードにない場合には、次のブレークポイントに到達するか、エージェントコードが終了するまで実行を続けます。

    ステップイン

    一度に 1 行ずつステップ単位でコードを実行し、サブルーチンまたは関数に入ります。

    注: 一度に 1 行ずつステップ単位でスクリプトを実行する際に、このボタンを繰り返し使用します。

    ステップオーバー

    一度に 1 行ずつステップ単位でコードを実行し、sub や function コードが実行されてもサブルーチンまたは関数に入りません。

    停止

    リモートデバッグ中のサーバータスクを切断します。エージェントコードの実行は中止されます。

  3. コード実行中、デバッグの結果がユーティリティペインに表示されます。ユーティリティペインには、タブセクションが表示されます。

    タブ

    説明

    ブレークポイント

    コードに追加したブレークポイントの位置の一覧を表示します。

    コール

    エージェントで現在何が実行されているかを識別し、現在実行スタックにあるすべてのサブプログラムを表示します。例えば、folderDocs:INITIALIZE 5 は、folderDocs エージェントの Initialize イベントの 5 行目が次に実行されることを示します。

    出力

    サーバーコンソールの出力を表示します。コードまたはエラーメッセージ内の print ステートメントがすべて表示されます。

    変数

    作成された変数とその値 (コードで値が提供されている場合) の一覧を表示します。ペインの末尾にある編集ボックスを使用して、選択した変数の値を変更できます。