デバッガは、Natural オブジェクトの実行中に、デバッグを行うために Natural セッションの制御を受け取ります。 このため、プログラムの処理フローに従って、さまざまなプログラム調査を実行できます。
プログラムにデバッグエントリ(ブレイクポイントまたはウォッチポイント)を設定すると、デバッガがプログラムを中断する場所を指定できます。
プログラム実行が中断すると、プログラムで使用されている変数またはパラメータの内容を調べて、プログラムロジックを分析したり、Natural エラーの原因を特定したりできます。
このセクションでは、デバッガの機能に関する一般的な情報を説明します。
テストモードが ON
に設定されると、Natural セッションの制御がデバッガに移動します(「テストモードのオンとオフの切り替え」を参照)。 プロファイルパラメータ DBGERR
が ON
に設定されている(『パラメータリファレンス』ドキュメントを参照)場合は、デバッグエントリやテストモードの設定(ON
または OFF
)にかかわらず、Natural エラーが発生すると、デバッガが呼び出されます。
デバッガは、セッションを制御しているときに、次の 1 つ以上の機能を実行します。
デバッグエントリをチェックします。
ブレイクポイントが設定されたステートメント行で、Natural オブジェクトを中断します。
ウォッチポイントが設定された変数の値が変更されると、Natural オブジェクトを中断します。
検出したデバッグエントリ(ウォッチポイントとブレイクポイントのいずれかまたは両方)の情報を表示します。
呼び出される Natural オブジェクトの統計を提供します。
Natural オブジェクトで実行されるステートメントの統計を提供します。
Natural エラーが発生すると、Natural オブジェクトを中断します。 「エラー処理」セクションも参照してください。
次の図は、デバッガで Natural オブジェクトが実行されるときの処理フローの例を示しています。
デバッグエントリは、デバッガ環境ではスパイとも呼ばれます。 使用できるデバッグエントリ(スパイ)は、ブレイクポイントとウォッチポイントの 2 タイプです。
以下では次のトピックについて説明します。
現在のデバッグセッションのデバッグエントリは、該当するデバッガメンテナンス機能を使用して、設定、変更、一覧表示、表示、有効化、無効化、および削除が可能です。これらの機能については、デバッガのドキュメントの該当セクションで説明しています。 デバッグエントリは、将来使用するために保存することができます。これについては、「デバッグ環境のメンテナンス」で説明しています。
デバッグエントリの有効性チェックは、該当するメンテナンス画面でブレイクポイントまたはウォッチポイントが定義された直後、または、プログラム実行中に実行されます。
プログラム実行中に有効性チェックに失敗した場合は、「Check for invalid spy definition
」という注記が[Debug Break]ウィンドウに表示されます(「[Debug Break]ウィンドウ」を参照)。 さらに、無効なブレイクポイントまたはウォッチポイントには、該当するブレイクポイントまたはウォッチポイントのメンテナンス画面でマークが付けられます。
デバッグエントリが設定または変更されると、Natural は内部的に、オブジェクトが存在するライブラリ、データベース ID、およびファイル番号を保存します。 オブジェクトは、現在のライブラリ、またはその steplib のいずれかに存在します。 その後に同じ名前のオブジェクトが別のライブラリから実行された場合、対応するデバッグエントリは実行されません。
デバッガは各デバッグエントリに、名前と一意の番号(スパイ番号)を割り当てます。 デバッグエントリに割り当てられる名前(スパイ名とも呼ばれます)は、ユーザーが指定した名前、またはデバッガが作成したデフォルト名です。 デバッグエントリは、対応するデバッガコマンドで番号を指定して選択できます。 特定のステートメント行で複数のデバッグエントリを実行する必要がある場合は、その番号の昇順で実行されます。
各デバッグエントリには、初期状態と現在の状態があります。 設定可能な値は A
(アクティブ)および I
(非アクティブ)です。 初期状態の値は、ブレイクポイントまたはウォッチポイントが設定または変更されるときに指定され、これにより、環境の起動時またはリセット後の各デバッグエントリの状態が決定されます。 デバッグセッション中には、デバッグコマンド
ACTIVATE
および DEACTIVATE
で状態を変更できます(「コマンドの概要と構文」の構文図も参照)。
各デバッグエントリにはイベントカウントがあり、デバッグエントリが実行されるたびに増えていきます。 デバッグエントリは、現在の状態が非アクティブの場合は実行されません。 ブレイクポイントまたはウォッチポイントのイベントカウントも増えません。
デバッグエントリの実行回数は 2 通りの方法で制限できます。
デバッグエントリが実行される前にスキップ回数を指定できます。 その後、イベントカウントが指定されているスキップの数より多くなるまで、デバッグエントリは無視されます。
実行回数の上限を指定して、イベントカウントが指定の実行回数を上回ったら直ちにデバッグエントリが無視されるようにすることができます。
各デバッグエントリ(ブレイクポイントまたはウォッチポイント)には、6 個までのデバッグコマンドを指定できます。 これらのコマンドは、ブレイクポイントまたはウォッチポイントの実行時に実行されます。 デバッグ中断中に適用可能なすべてのデバッガコマンドを使用できます。
デフォルトのコマンドは BREAK
コマンドで、これにより、次のセクションで説明する[Debug Break]ウィンドウが表示されます。
注意:
デバッグエントリの設定時に BREAK
コマンドを削除し、ダイアログを表示するコマンドを何も指定しないと、プログラムの中断時に制御を受け取る方法がなくなります。
デバッガがセッションの制御を受け取ると、次の例のような[Debug Break]ウィンドウが表示されます。
+------------------- Debug Break -------------------+ ! Break by breakpoint DEBPGM-ALL ! ! at line 180 in program DEBPGM (level 1) ! ! in library SAG in system file (10,32). ! ! ! ! G Go ! ! L List break ! ! M Debug Main Menu ! ! N Next break command ! ! R Run (set test mode OFF) ! ! S Step mode ! ! V Variable maintenance ! ! ! ! Code .. G ! ! Note: Check for invalid spy definition. ! ! ! ! PF2=Step,PF13=Next,PF14=Go,PF15=Menu,PF17=SkipS ! +---------------------------------------------------+ |
[Debug Break]ウィンドウには、ブレイクを発生させたデバッグエントリのタイプと名前(つまり、対応するブレイクポイントまたはウォッチポイントの名前)、そのソースコード行番号、および中断された Natural オブジェクトの名前が示されます。
また、[Debug Break]ウィンドウの一番下には、Natural エラー(「エラー処理」の「アプリケーション実行時のエラー」も参照)、または、考えられる無効なデバッグエントリを示すメッセージが表示される場合があります。
[Debug Break]ウィンドウに用意されている機能は、次の表で説明しています。 詳細については、「実行制御コマンド」を参照してください。
機能 | コード | 説明 |
---|---|---|
指定された次のデバッグエントリまで、Natural オブジェクトの実行を継続します。 | ||
現在アクティブな Natural オブジェクトのコードのリストを表示します。 最後に実行されたステートメントが強調表示されます。 | ||
デバッグメインメニューを呼び出します。このメニューでは、制御が渡されるデバッグエントリのメンテナンスに必要なすべての機能が提供されます。 | ||
現在のブレイクポイントまたはウォッチポイントに指定された次のコマンドを実行します。 | ||
テストモードを OFF に設定して、Natural オブジェクトの実行を継続します。 | ||
ステップモードで、Natural オブジェクトの実行を継続します。 | ||
現在アクティブな Natural オブジェクトの変数を表示し、これらの変数の内容を変更します。 |