変数値が変わると常に、ウォッチポイントによって Natural オブジェクトの実行が中断されます。 また下記の「ウォッチポイント演算子」で説明しているように(「ウォッチポイントの設定」も参照)、特定の変数値に関連付けた条件に応じて中断させることもできます。
ウォッチポイントを使用すると、エラーがあるオブジェクトによって予期せず変更された変数を検出できます。
変数が変更されたと見なされるのは、変数の現在の値が、ウォッチポイントが前回トリガされたときに記録された値または初期値と異なる場合です。 ウォッチポイント値の比較検証は、253 バイトのフィールド長に制限されています。 最大長を超えるラージ変数の場合は、最初の 253 バイトのみが比較に使用されます。
ウォッチポイントは、Natural オブジェクトの名前と適切な変数の名前を指定して定義します。
ウォッチポイントの一意の識別子は、デバッガによって割り当てられるスパイ番号です。
ウォッチポイントを指定すると、そのウォッチポイントを削除するまで Natural セッション全体で有効になります。
Watchpoint maintenance 機能を呼び出すには
デバッグメインメニューでファンクションコード「W
」を入力します。
または:
次のダイレクトコマンドを入力します。
WM
[Watchpoint Maintenance]メニューが表示されます。
このセクションでは、[Watchpoint Maintenance]メニューの機能、およびウォッチポイント画面のフィールドと列について説明します。
「テストモードのオンとオフの切り替え」を参照してください。
指定したウォッチポイントの現在の状態をアクティブに設定するには
[Watchpoint Maintenance]メニューで、ファンクションコード「A
」、オブジェクト名または変数名、あるいはその両方を入力します。
または:
ダイレクトコマンド ACTIVATE
を使用します。その構文については、「コマンドの概要とコマンド構文」セクションで説明しています。
オブジェクトまたは変数を指定しない場合(または[Variable]フィールドでデフォルトのアスタリスクをそのまま使用する場合)は、すべてのウォッチポイントが有効になります。
指定したウォッチポイントの現在の状態を非アクティブに設定するには
[Watchpoint Maintenance]メニューで、ファンクションコード「B
」、オブジェクト名または変数名、あるいはその両方を入力します。
または:
ダイレクトコマンド DEACTIVATE
を使用します。その構文については、「コマンドの概要とコマンド構文」セクションで説明しています。
オブジェクト名または変数を指定しない場合(または[Variable]フィールドでデフォルトのアスタリスクをそのまま使用する場合)は、すべてのウォッチポイントが無効になります。
指定したウォッチポイントを削除するには
[Watchpoint Maintenance]メニューで、ファンクションコード「C
」、オブジェクト名または変数名、あるいはその両方を入力します。
または:
ダイレクトコマンド DELETE
を使用します。その構文については、「コマンドの概要とコマンド構文」セクションで説明しています。
オブジェクト名または変数を指定しない場合(または[Variable]フィールドでデフォルトのアスタリスクをそのまま使用する場合)は、すべてのウォッチポイントが削除されます。
ウォッチポイントを表示するには
[Watchpoint Maintenance]メニューで、ファンクションコード「D
」、オブジェクト名または変数名、あるいはその両方を入力します。 オブジェクト名を入力しない場合は、デフォルトオブジェクト(指定されている場合)が使用されます。
または:
ダイレクトコマンド DISPLAY
を使用します。その構文については、「コマンドの概要とコマンド構文」セクションで説明しています。
指定されたオブジェクト名と変数名にウォッチポイントが設定されている場合は、下の例のような、すべてのウォッチポイントの定義を示す[Display Watchpoint]画面が表示されます。
10:25:32 ***** NATURAL TEST UTILITIES ***** 2006-02-14 Test Mode ON - Display Watchpoint - Object Spy number .............. 12 Initial state ........... active Current state .. active Watchpoint name ......... WATCHTEST1 DBID/FNR ....... 10/32 Object name ............. WATCHPGM Library ........ SAG Variable name ........... WATCHVARIABLE Skips before execution .. 0 Format/length .. A 10 Max number executions ... 0 Persistent ..... N Act.level ... 0 Number of activations ... 0 Error in definition ..... - none - Commands ... BREAK Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Last Mod Flip Alpha Hex Canc |
[Display Watchpoint]画面のフィールドについては、「ウォッチポイント画面のフィールドと列」で説明します。
一意のウォッチポイントが見つからない場合は、[List Watchpoints]画面(下記を参照)が表示されます。
[Display Watchpoint]画面では、ウォッチポイント演算子で指定したウォッチポイントの有効化の条件を表示できます(「ウォッチポイント演算子」も参照)。
演算子またはオペランド値、あるいはその両方を英数字形式で表示するには、PF10(Alpha)キーを押します。 .
または:
演算子またはオペランド値、あるいはその両方を 16 進形式で表示するには、PF11(Hex)キーを押します。
[Commands]フィールドがある[Display Watchpoint]画面のデフォルト表示に戻るには、PF22(Cmds)キーを押します。
ウォッチポイントをリストするには
[Watchpoint Maintenance]メニューで、ファンクションコード「D
」、オブジェクト名または変数名を入力します。 ABC
* のように、アスタリスク(*)記号を使用すると、一定の範囲のオブジェクト名や変数名を指定できます。 アスタリスク(*)のみを入力すると、すべての名前が選択されます。 オブジェクト名を入力しない場合は、デフォルトオブジェクト(指定されている場合)が使用されます。
または:
ダイレクトコマンド DISPLAY
を使用します。その構文については、「コマンドの概要とコマンド構文」セクションで説明しています。
下の例のような[List Watchpoints]画面が表示されます。この画面には、指定したオブジェクト名または変数名に設定されたすべてのウォッチポイントがリストされます。
10:14:05 ***** NATURAL TEST UTILITIES ***** 2006-02-14 Test Mode ON - List Watchpoints - Object Top of data Co No. WP Name Library Object DBID FNR Stat Skips Execs Count P E *___________ *_______ *_______ I C *_______________________________________________________________________ __ 1 NAME SAG DEBPGM 10 32 A A 0 0 0 N EMPLOYEES-VIEW.NAME __ 5 #MAKE SAG DEBPGM 10 32 A A 0 0 0 N #MAKE __ 10 LEAVE-DUE SAG DEBPGM 10 32 A A 0 0 0 N EMPLOYEES-VIEW.LEAVE-DUE __ 11 WATCHTEST2 SAG DEBPGM 10 32 A A 0 0 0 N TESTWP __ 12 WATCHTEST1 SAG WATCHPGM 10 32 A A 0 0 0 N WATCHVARIABLE __ 13 WATCHTEST3 SAG DEBPGM 10 32 A A 0 0 0 N WPTEST Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Last Flip - + Canc |
このリストは、[No.] 列のスパイ番号によって昇順でソートされます。
[List Watchpoints]画面の列や、リスト項目に対して実行できる行コマンドの詳細については、「ウォッチポイント画面のフィールドと列」を参照してください。
ウォッチポイントを変更するには
[Watchpoint Maintenance]メニューで、ファンクションコード「M
」、オブジェクト名および変数名を入力します。 オブジェクト名を入力しない場合は、デフォルトオブジェクト(指定されている場合)が使用されます。
または:
ダイレクトコマンド MODIFY
を使用します。その構文については、「コマンドの概要とコマンド構文」セクションで説明しています。
一意のウォッチポイントが指定されている場合は、[Modify Watchpoint]画面が表示され、ここでフィールドのエントリを変更できます。 [Modify Watchpoint]画面のフィールドについては、「ウォッチポイント画面のフィールドと列」で説明しています。
一意のウォッチポイントが見つからない場合は、[List Watchpoints]画面(「ウォッチポイントの表示」を参照)が表示されます。
[Modify Watchpoint]画面では、ウォッチポイント演算子で指定したウォッチポイントの有効化の条件を変更できます(「ウォッチポイント演算子」も参照)。
演算子またはオペランド値、あるいはその両方を英数字形式で変更するには、PF10(Alpha)キーを押します。 .
または:
演算子またはオペランド値、あるいはその両方を 16 進形式で変更するには、PF11(Hex)キーを押します。
[Commands]フィールドがある[Modify Watchpoint]画面のデフォルト表示に戻るには、PF22(Cmds)キーを押します。
ウォッチポイント定義の編集を完了したら、PF3(Exit)または PF5(Save)キーを押して変更を保存します。 PF12(Canc)キーを押すと、ウォッチポイントは変更されないままになります。
セッションのウォッチポイントを追加するには
[Watchpoint Maintenance]メニューで、ファンクションコード「S
」、オブジェクト名および変数名を入力します。
または:
ダイレクトコマンド SET
を使用します。その構文については、「コマンドの概要とコマンド構文」セクションで説明しています。
または:
Natural オブジェクトの実行前:
[List Object Source]画面を表示します(「オブジェクトソースのリスト」を参照)。
[Source]列で、変数名にカーソルを置いて PF18(Se Wp)キーを押します。
オブジェクト名ではなく、有効な変数名を指定すると、デフォルトオブジェクトの名前が使用されます(「デバッガの開始」を参照)。 デフォルトオブジェクトが指定されていない場合は、現在のライブラリで使用可能なすべてのオブジェクトを示す選択ウィンドウが表示されます。
オブジェクト名と変数名が適切に指定されている場合、ウォッチポイントがすぐに設定され、対応する確認メッセージが画面に表示されます。 ダイナミック変数または X-array に設定したウォッチポイントは、プログラムの実行時にのみチェックされます。 デバッグエントリの有効性チェックの詳細については、「メンテナンスと検証」も参照してください。
ウォッチポイントはデフォルトコマンド(BREAK
)を受信し、初期の状態と現在の状態がアクティブに設定され、実行に関する制限は指定されません。 ウォッチポイントの設定時にデフォルトコマンド BREAK
を削除し、ダイアログを表示するコマンドを何も指定しないと、プログラムの中断時にデバッガが制御を受け取れなくなります。
このセクションでは、次のトピックについて説明します。
[Watchpoint Maintenance]画面で演算子と適切なオペランド(対応するオペランドがある場合)を指定することで、ウォッチポイントの有効化に対して条件を指定することができます。
ウォッチポイント演算子を指定するには
英数字形式で演算子オペランドを指定する場合は、選択したウォッチポイントの[Set Watchpoint]または[Modify Watchpoint]画面で PF10(Alpha)キーを押します。
または:
16 進形式で演算子オペランドを指定する場合は、選択したウォッチポイントの[Set Watchpoint]または[Modify Watchpoint]画面で PF11(Hex)キーを押します。
2 つの入力フィールドが画面の下半分に表示されます。
左の入力フィールドには、次の表に示すウォッチポイント演算子のいずれかを入力します。
右の入力フィールドには、変数と比較するオペランド値(対応するオペランドがある場合)を入力します。 ダイナミック変数(英数字またはバイナリ)に対して指定した演算子があるウォッチポイントの場合、オペランド値は左から右へ比較されます。 ダイナミック変数のフィールド長は変化するため、最大 253 バイトを比較値として入力できます。 ダイナミック変数の現在の長さが 253 バイトの最大比較長よりも短い場合、比較はダイナミック変数の現在の長さの範囲内でのみ実行されます。
演算子 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|
MOD |
変更。 これはデフォルト設定です。 |
||||||||
EQ |
等しい。 |
||||||||
NE |
等しくない。 |
||||||||
GT |
より大きい。 |
||||||||
GE |
より大きいまたは等しい。 |
||||||||
LT |
より小さい。 |
||||||||
LE |
より小さいまたは等しい。 |
||||||||
INV |
無効な内容です。
|
PF22(Cmds)キーを押すと、[Commands]入力フィールドのある[Set Watchpoint]または[Modify Watchpoint]画面のデフォルト表示に戻ることができます。
演算子の定義を保存するには、PF5(Save)キーを押します。
または:
演算子の定義を変更しないままで[Modify Watchpoint]画面を終了するには、PF12(Canc)キーを押します。
次の表では、[Display Watchpoint]または[Modify Watchpoint]画面のフィールドと、[List Watchpoints]画面の列について説明します。
フィールド | 列 | 説明 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Test Mode | テストモードが ON と OFF のいずれに設定されているかを示します。
|
|||||||||||||||
Object | 指定されている場合、デフォルトオブジェクトの名前を示します(「デバッガの開始」を参照)。 | |||||||||||||||
Co | これは入力フィールドであり、次のいずれかの行コマンドを指定できます。
|
|||||||||||||||
Spy number | No. | ウォッチポイントの設定時にデバッガによって割り当てられる一意の数値。 | ||||||||||||||
Initial state | Stat I | ウォッチポイントの初期の状態と現在の状態として、アクティブ(A )または非アクティブ(I )を指定します。
|
||||||||||||||
Current state | Stat C | |||||||||||||||
Watchpoint name | WP Name | ウォッチポイントの名前。
ウォッチポイントのデフォルト名は、関連する変数の名前です。 有効な値は 1~12 文字です。 フィールドサイズを超えた名前は、12 文字よりも後が切り捨てられます。 [List Watchpoints]画面では、ウォッチポイント名が変数名の上の第 1 行に表示されます。 |
||||||||||||||
DBID/FNR | DBID | Natural オブジェクトが保存されているシステムファイルのデータベース ID(DBID)とファイル番号(FNR)。 | ||||||||||||||
FNR | ||||||||||||||||
Library | Library | オブジェクトを含むライブラリの名前。 | ||||||||||||||
Object name | Object | 現在のライブラリまたは STEPLIB のいずれかで使用できるオブジェクトの名前。
システム変数をウォッチポイントとして指定する場合は、[Object name]フィールドにアスタリスク(*)を入力します。 |
||||||||||||||
Variable name | ユーザー定義のグローバル変数またはシステム変数の名前。
変数がグループの一部である場合、その変数には接頭辞としてグループ名が追加されます。 システム変数を指定する場合は、[Object name]フィールドにアスタリスク(*)を入力します。 配列に対しては、インデックスの記述を指定する必要があります。ウォッチポイントは、1 つの要素に対してのみ定義できます。 [List Watchpoints]画面では、変数名がウォッチポイント名の下の第 2 行に表示されます。 詳細については、「変数のメンテナンス」も参照してください。 |
|||||||||||||||
Skips before execution | Skips | ウォッチポイントに対して設定した条件を満たすまで、ウォッチポイントは実行しないと指定します(「ウォッチポイント演算子」も参照)。
有効な値は 0(デフォルト)~32767 です。 |
||||||||||||||
Max number executions | Execs | ゼロ(0)より大きい任意の数値で、ウォッチポイントの最大実行回数を指定します。
有効な値は 0(デフォルト)~32767 です。 |
||||||||||||||
Number of activations | Count | ウォッチポイント演算子を使用して変数に対して設定したウォッチポイント条件が満たされた回数を示します。
このカウンタは、プログラムがレベル 1 で起動されるとリセットされます。 |
||||||||||||||
Format/length | 例えば A10 など、変数の Natural データフォーマットと長さ。 | |||||||||||||||
Persistent | P | ウォッチポイントをパーシスタントとしてマークします。 パーシスタントウォッチポイントは、それらが定義された Natural オブジェクトに限定されず、下位のすべてのプログラムレベルに追加的に適用されます。
パーシスタントウォッチポイントは、 制限事項 有効な値は |
||||||||||||||
Act. level | パーシスタントへの参照。
パーシスタントウォッチポイントが自動的に有効にされたプログラムレベルを示します。 |
|||||||||||||||
Error in definition | E | 無効なウォッチポイント定義を示します。 それぞれの変数定義が変更された後、デバッグ時に実行中のプログラムが再カタログされると、このエラーが発生する可能性があります。
ダイナミック変数または X-array(eXtensible 配列)に設定したウォッチポイントは、プログラムの実行時にのみチェックされます。 |
||||||||||||||
Commands | 6 個までのデバッグコマンド。 各行に 1 個のコマンドを入力します。 使用できるすべてのコマンドの概要については、「コマンドの概要と構文」を参照してください。
注意: |