マーカーの種類

<< 目次を表示 >>

ページ位置:  プログラムの動作解析 > 動作の記録 > 記録マーカーの配置 >

マーカーの種類

マーカーを利用すると、デバッグの実行時に特定の2点間の処理について自動的に履歴情報を取得します。この機能はマルチスレッドで動作する場合にも有効です。特に、イベント駆動(時間経過やマウスの操作で発生するイベント)のシーケンスを記録する場合には非常に便利に活用できます。なぜなら、ユーザー側の操作の必要なく履歴の記録が可能になるからです。

 

このマーカーはブレークポイントとして表現されますが、停止はしません。このマーカー(ブレークポイント)が記録開始点として設定されている場合、そのスレッドのその後の処理を記録します。スレッドが終了するか、記録停止点に到達すると記録は終了します。

 

ブレークポイントとマーカーが異なる点は、ブレークポイントは常に明示的に定義するのに対し、マーカーは実行を中断することなく、関連する処理を実施する点にあります。

 

これらのマーカーはソースコードエディタタブで設定します。記録を開始する場所の左端の余白で右クリックすると、コンテキストメニューが表示されます。

 

 

項目

参照

記録開始マーカーと記録終了マーカー

ソースコードエディタの左端の余白で右クリックし、「記録開始マーカーの追加」を選択すると記録開始点の設定ができます。また、同様の操作で「記録終了マーカーの追加」を選択すると、記録終了点の設定ができます。

これらのマーカーは次のように表示されます。:

 

 

デバッガの実行中でスレッドが実行されているときには、スタック履歴を記録し続けます。ここで記録終了マーカーに達するかスレッドが終了すると記録を終了します。

 

スタックの深さを制限する方法は、アプリケーションの高レベルのコードから記録する場合に役に立ちます。必要以上に深い呼び出しは記録しません。その結果、概要を把握する際に役に立つシーケンス図を生成できます。

スタックの深さを指定する場合には、記録サブウィンドウかブレークポイントとマーカーサブウィンドウのツールバーにある入力場所で希望する深さを指定します。指定した深さの値は、相対的な値です。ブレークポイントや記録マーカーが存在する位置から、深さを測定します。以下は例です。

 

  • ブレークポイントに遭遇した場合に、スタックサブウィンドウでは5階層が表示されているとします。もし、上限値が3の場合にこの位置から自動記録を開始する場合には、デバッガはスタックの深さが5から8までの範囲の呼び出しを記録します。

 

解析対象のシステムが非常に大きい場合には、この値を大きくすると記録内容が複雑になり、処理に時間がかかります。このような状況では、最初は上限値を2か3程度にして解析を実行し、必要に応じて徐々に数値を大きくすることをお勧めします。

スタック自動捕捉マーカー

 

 

スタック自動捕捉マーカーを利用すると、アプリケーションの内部で発生するスタック情報を捕捉・記録できます。

コード内の特定のポイントにマーカーを追加するには、対象の行の左端の余白を右クリックして「スタック自動捕捉マーカーの追加」を選択します。

デバッガの実行時にこのマーカーに遭遇すると、スタック情報を記録します。もし、スタック情報が動作ログに含まれない場合には、動作ログにもコピーされます。その後、そのまま処理は継続されます。スタック自動捕捉マーカーは指定した時点で、どこから呼ばれているのかを把握するための便利な機能です。

操作記録マーカー

操作記録マーカーを利用することで、デバッグ中に対象の操作(メソッド)が呼ばれた場合に自動的に動作を記録できます。

デバッガは、このマーカーがある場所より後の動作について、動作の内容をすべて記録し、マーカーが配置されている操作を抜けると記録も終了します。このマーカーは、記録開始マーカーと記録終了マーカーの機能が一つになったもの、と言えます。

 

例:

 

 

操作記録マーカーが入れ子になっている場合には、最後に通過した操作記録マーカーを基準にして、指定した深さの内容まで記録を行います。

トレースポイントマーカー

トレースポイントマーカーについては「トレースポイント」のページをご覧ください。

アクションポイントマーカー

アクションポイントマーカーは、指定した行に到達した場合に指定した処理を実行できます。

 

アクションポイントマーカーはを作成するには、ソースコードエディタ内の該当行を右クリックし、「ブレークポイント | アクションポイントの追加」を選択してください。

 

表示される「ブレークポイントのプロパティ」ダイアログにおいて「アクション定義」にチェックを入れ、アクション内容を記載してください。

 

  • 独自変数を定義し、設定・参照できます。独自変数を定義する場合には、変数名の前に#を付加してください。定義したアクションポイントと異なるアクションポイントで参照できます。
  • 以下の文字列を利用することで、時間に関する情報を出力できます。
  • startTimer : タイマーの動作を開始します。
  • printTimer : タイマーの時間を出力します。
  • endTimer : タイマーの動作を終了します。

 

 

参照: