複数のプロセスのエンクレーブのデバッグ
プロセスに複数のエンクレーブがある場合、Debug Tool の単一セッションで
エンクレーブ全体のデバッグを行います。新しいプロセスが新しいセッションで開始するとき、1 つのプロセスに設定したブレークポイントが復元されます。
フルスクリーン・モードまたはバッチ・モードでは、複数のプロセスにまたがる非 POSIX
プログラムをデバッグできますが、Debug Tool は 1 つのプロセスでしかアクティブにするこ
とができません。リモート・デバッグ モードでは、複数のプロセスにまたがる POSIX プログラムをデバッグできます。リモート・デバッガーは個々のプロセスを表示できます。
実行するステートメントを記録する場合、記録を停止するまで、データ収集は複数のエンクレーブにまたがって行われます。ステートメントを再生する場合、記録されたのと同じ順序でエンクレーブの境界を超えながらデータが再生されます。
コマンド・ファイルにある一連のコマンドの実行は、どのレベルの
エンクレーブに入っているかに無関係に継続します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
エンクレーブの中での Debug Tool の始動
あるプロセス内のエンクレーブにより Debug Tool がアクティブにされると、エンクレーブに対するランタイム・オプションが TEST あるいは NOTEST のどちらを指定するかに関係なく、その後のエンクレーブの間ずっとアクティブの状態が維持されます。Debug Tool は、Debug Tool を活動化したエンクレーブに対して
実行時 TEST オプションで指定された設定
を、SET TEST で変更されるまで保持します。Debug Tool セッションに複数のプロセスがある場合、TEST の設定は、各新規プロセスで Debug Tool を最初に活動化したエンクレーブの TEST ランタイム・オプションでの指定に従ってリセットされます。
Debug Tool が、最初に、あるプロセスのネストされたエンクレーブによりアクティブにされ、ユーザーが親エンクレーブへ進むか後退する場合、親エンクレーブをデバッグすることができます。しかし、親エンクレーブは COBOL を含むが、ネストされたエンクレーブが COBOL を
含まない場合は、Debug Tool は、子エンクレーブから戻っても、親エンクレーブで活動
状態になりません。
Debug Tool を活動化すると、初期コマンド・ストリング、基本コマンド・ファイル、および優先ファイルを実行します。これらのコマンド・ファイルの実行は
1 回限りで、結果は Debug Tool のセッション全体を通じて影響します。新規の基本コマンド・ファイルを、新規のエンクレーブのために始動することはできません。
複数のエンクレーブにわたる Debug Tool ウィンドウの表示
あるエンクレーブによって別のエンクレーブが開始される場合、最初のエンクレーブにあるすべてのコンパイル単位は非表示になります。
コンパイル単位が現在のエンクレーブ内にある場合のみ、視点を新規コンパイル単位に変更することができます (SET QUALIFY コマンドを使用)。
複数のエンクレーブ内の Debug Tool セッションの終了
ホストでの次のプロセスに TEST ランタイム・オプションの NOPROMPT サブオプションを指定すると、Debug Tool は次のプロセスの制御を取得した後に、保存されているブレークポイントをリストアします。ただし、Debug Tool は、多くのステートメントが実行された後にプロセスの制御を取得する可能性があります。したがって、Debug Tool は、次のブレークポイントの一部しか実行しないか、または
すべて実行しないことがあります。
- STATEMENT/LINE
- ENTRY
- EXIT
- LABEL
もしこれらのブレークポイント・タイプを使用していない場合は、NOPROMPT を指定できます。
単一のエンクレーブでは、QUIT により Debug Tool をクローズします。CICS®
非言語環境プログラムのプログラム (アセンブラーまたは非言語環境プログラムの COBOL) の場合、QUIT は、Debug Tool をクローズして、リンク・レベルに関係なくタスクを ABEND 4038
で終了させます。
しかし、ネストされたエンクレーブの場合、QUIT により Debug Tool は、言語環境プログラムのメッセージ CEE2529S に対応する重大度 3 状態のシグナルを出します。システムは、プロセスのすべてのエンクレーブを正常に終了するよう試みます。
普通、この条件で現在のエンクレーブが終了します。次に、同じ条件が親エンクレーブで発生し、これも終了します。プロセスのすべてのエンクレーブが終了するまで、この手順が継続されます。結果として、終了するそれぞれのエンクレーブに対して CEE2529S の
メッセージが表示されます。
CICS および MVS の場合のみ: Language Environment®の実行時の設定によっては、アプリケーションは ABEND 4038 によって終了される可能性があります。これは正常で、予期される終了です。
複数のエンクレーブ内での Debug Tool コマンドの使用
Debug Tool コマンドと変数のなかには、エンクレーブおよびプロセスに対する
使用範囲が限定されているものがあります。下記の表に、複数のエンクレーブから成るアプリケーションをデバッグ
するときの特定の Debug Tool コマンドと変数の動作をまとめています。
| Debug Tool コマンド |
現在のエンクレーブにのみ影響 |
Debug Tool セッション全体に影響 |
コメント |
| %CAAADDRESS |
X |
|
|
| AT GLOBAL |
|
X |
|
| AT TERMINATION |
|
X |
|
| CLEAR AT |
X |
X |
現在のエンクレーブに設定したブレークポイントのクリアに加えて、CLEAR AT でグローバルなブレークポイントのクリアが可能です。 |
| CLEAR DECLARE |
|
X |
|
| CLEAR VARIABLES |
|
X |
|
| Declarations |
|
X |
セッション変数は、これらが宣言されているプロセスの終了時点で消去されます。 |
| DISABLE |
X |
X |
DISABLE は、現在のエンクレーブに設定したブレークポイントの使用不可化に加えて、グローバルなブレークポイントをも使用不可にできます。 |
| ENABLE |
X |
X |
ENABLE は、現在のエンクレーブに設定したブレークポイントの使用可能化に加えて、グローバルなブレークポイントの使用可能化もできます。 |
| LIST AT |
X |
X |
LIST AT は、現在のエンクレーブに設定したブレークポイントのリスト表示に加えて、グローバル・ブレークポイントもリスト可能です。 |
| LIST CALLS |
X |
|
MVS
バッチと MVS TSO
を除くすべてのシステムに適用される。MVS
バッチと MVS TSO の下では、LIST CALLS は現在アクティブなエンクレーブ内の現在アクティブなスレッドへの呼び出しチェーンをリストします。
言語間通信 (ILC) を使用しているプログラムの場合、チェーン内の前のエンクレーブからのルーチンがリストされるのは、ルーチンが現在の
エンクレーブで活動状態になっている言語で作成されている場合のみです。
注:
PL/I のマルチタスキング・アプリケーションの場合、現行スレッドの
コンパイル単位のみをリストします。 |
| LIST EXPRESSION |
X |
|
現在活動状態にあるスレッドの変数のみリスト可能です。 |
| LIST LAST |
|
X |
|
| LIST NAMES CUS |
|
X |
コンパイル単位名に適用される。デバッグ・フレーム・ウィンドウにおいては、親エンクレーブにあるコンパイル単位は非活動とマークされます。 |
| LIST NAMES TEST |
|
X |
Debug Tool セッション変数名に適用されます。 |
| MONITOR GLOBAL |
|
X |
グローバル・モニターに適用されます。 |
| PLAYBACK ENABLE |
|
X |
Debug Tool に記録セッションを開始するよう伝える PLAYBACK コマンド。 |
| PLAYBACK DISABLE |
|
X |
Debug Tool に記録セッションを停止するよう伝える PLAYBACK コマンド。 |
| PLAYBACK START |
|
X |
プログラムの実行を一時中断し、Debug Tool に再生モードへ移行するよう指示する PLAYBACK コマンド。 |
| PLAYBACK STOP |
|
X |
再生モードを終了し、Debug Tool の通常の実行を再開させる PLAYBACK コマンド。 |
| PLAYBACK BACKWARD |
|
X |
Debug Tool に対し、STEP および RUNTO コマンドを、現在の時点から直前の時点へ、逆方向に実行するよう指示する PLAYBACK コマンド。 |
| PLAYBACK FORWARD |
|
X |
Debug Tool に対し、STEP および RUNTO コマンドを、現在の時点から次の時点へ、順方向に実行するよう指示する PLAYBACK コマンド。 |
| PROCEDURE |
|
X |
|
| SET AUTOMONITOR1 |
X |
|
現在実行中のステートメントにおけるデータ項目のモニターを制御します。 |
| SET COUNTRY1 |
X |
|
この設定値は、アプリケーションと Debug Tool の両方に影響を与えます。
エンクレーブの開始時点では、設定値は、言語環境プログラムまたはオペレーティング・システムが設定したものになっています。ネストされたエンクレーブの場合、子エンクレーブから戻ると、親の設定が復元されます。 |
| SET EQUATE1 |
|
X |
|
| SET INTERCEPT1 |
|
X |
C の場合、インターセプトされたストリームまたはファイルは、ネストされたエンクレーブの実行中に C の入出力リダイレクトの対象にはなりません。例えば、stdout がプログラム A でインターセプトされた場合、プログラム A はプログラム B に system() 呼び出しを実行するときに、stdout を stderr にリダイレクトすることはできません。これは、PL/I でもサポートされません。 |
| SET NATIONAL LANGUAGE1 |
X |
|
この設定値は、アプリケーションと Debug Tool の両方に影響を与えます。
エンクレーブの開始時点では、設定値は、言語環境プログラムまたはオペレーティング・システムが設定したものになっています。ネストされたエンクレーブの場合、子エンクレーブから戻ると、親の設定が復元されます。 |
| SET PROGRAMMING LANGUAGE1 |
X |
|
現在のエンクレーブで認知されているコンパイル単位の書き込みに使われたプログラム言語にのみ適用されます (言語は、アプリケーションの流れに入ったときに初めて「認識」されます)。 |
| SET QUALIFY1 |
X |
|
現在のエンクレーブで認知されているロード・モジュール、コンパイル単位、およびブロックにのみ出すことができます。 |
| SET TEST1 |
|
X |
|
| TRIGGER condition2 |
X |
|
誘因条件 2 にのみ適用されます。条件は、言語環境プログラムのシンボル・フィードバック・コードか、あるいは現在のプログラム言語の設定値に対応する言語指向のキーワードまたはコードです。 |
| TRIGGER AT |
X |
X |
現在のエンクレーブに設定したブレークポイントを起動することに加えて、TRIGGER AT はグローバル・ブレークポイントも起動できます。 |
注:
- この表にリストした以外の SET コマンドは、Debug Tool セッション全体に影響を与えます。
- 指定の条件を処理するための活動状態になっている条件ハンドラーがない場合、デフォルト条件ハンドラーは、正常完了を待たずにプログラムを終了させることができます。
|
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)