デバッグ・セッションの計画
デバッグを始める前に、計画を立てておくと、以下の選択を行うときに役立ちます。
- プログラムのコンパイルまたはアセンブルの際に使用する必要のある、コンパイラーまたはアセンブラーのオプションとサブオプション。
- Debug Tool と対話するために使用する、デバッグ・モード (バッチ、フルスクリーン、専用端末を使用するフルスクリーン・モード、またはリモート・デバッグ・モード)。
- Debug Tool を始動するために使用可能な 1 つまたは複数の方法。
- 旧バージョンの COBOL プログラム (「COBOL and CICS Command Level Conversion Aid for OS/390 & MVS & VM: User's Guide」にリストされている) を持っている場合は、それらのプログラムのデバッグ方法。
計画を作成する際には、以下の作業を実行します。
- 表 5 を使用して、ユーザーのプログラムに使用するコンパイラー・オプションおよびサブオプションを記録します。この表には、一連の一般コンパイラーに対して、最小プログラム・サイズでほとんどのデバッグ機能を提供できるコンパイラー・オプションが記載されています。以下の情報については、デバッグするためのコンパイラー・オプションの選択を参照してください。
- コンパイラー・オプションおよびサブオプションに必要な前提条件。
- コンパイラー・オプションおよびサブオプションをサイトで機能させるために必要になることがある追加作業。
- コンパイラー・オプションおよびサブオプションがプログラム・サイズおよび Debug Tool 機能に与える可能性のある影響に関する情報。
- 他の問題判別ツールを使用している場合に、その問題判別ツールで使用できる出力を作成するためのコンパイラー・オプションの選択方法に関する情報。
-
表 3 を使用して、使用するデバッグ・モードを記録します。
デバッグ・モードを機能させるための前提条件およびユーザーが行う必要のある作業については、デバッグ・モードの選択を参照してください。
- 表 11 を使用して、TEST ランタイム・オプションを指定するために使用する方法を記録します。ご使用のプログラムに最適な方法を判断するには、Debug Tool を開始する方法の選択を参照してください。
- デバッグする COBOL プログラムが旧バージョン (「COBOL and CICS Command Level Conversion Aid for OS/390 & MVS & VM: User's Guide」にリストされている) である場合、以下のどちらかを選択する必要があります。
- 古いソースのままにして、おそらくは、非言語環境プログラム COBOL プログラムとしてデバッグする。
- 1985 COBOL 標準レベルに変換する。
詳しくは、旧バージョンの COBOL プログラムのデバッグ方法の選択を参照してください。
これらの作業の完了後に、集めた情報を使用して、Debug Tool でプログラムをデバッグするためのプロセスの更新の指示に従ってください。
コンパイラー・オプションは、ロード・モジュールのサイズおよび使用可能な Debug Tool 機能の範囲に影響を与えます。
Debug Tool は、フックやシンボル・テーブルなどの情報を使用して、プログラムの制御を得て、プログラムをステートメントごとまたは行ごとに実行して、
プログラムに関する情報を表示します。
フックおよびシンボル・テーブルによって Debug Tool がプログラムをデバッグする仕組みの詳細については、以下のトピックをお読みください。
コンパイラー・オプションがどのように Debug Tool 機能に影響を与えるのかに関する詳細については、以下のトピックをお読みください。
表 5. この表に使用する必要があるコンパイラー・オプションを記録します。 Debug Tool for z/OS バージョン 10.1 以降で使用するオプション。
| コンパイラーまたはアセンブラー |
使用するコンパイラー・オプション |
| OS/VS COBOL バージョン 1 リリース 2.4 |
NOTEST、SOURCE、DMAP、PMAP、VERB、XREF、NOLST、NOBATCH、NOSYMDMP、NOCOUNT または
______________________________________________________________
|
| VS COBOL II バージョン 1 リリース 3 およびバージョン 1 リリース 4 (TEST コンパイラー・オプションでコンパイルされ、言語環境プログラム・ライブラリーでリンクされたプログラムの場合) |
TEST または
______________________________________________________________
|
| VS COBOL II バージョン 1 リリース 3 およびバージョン 1 リリース
4 (NOTEST コンパイラー・オプションを指定してコンパイルし、
非言語環境プログラムのライブラリーとリンクしたプログラムの場合。) |
NOTEST、NOOPTIMIZE、SOURCE、MAP、XREF、LIST (または OFFSET) または
______________________________________________________________
|
| AD/Cycle® COBOL/370 バージョン 1 リリース 1 |
TEST(ALL、SYM) または
______________________________________________________________
|
| COBOL for MVS & VM |
TEST(ALL、SYM) または
______________________________________________________________
|
| COBOL for OS/390® & VM |
TEST(NONE,SYM,SEPARATE) または
______________________________________________________________
|
| Enterprise COBOL for z/OS and OS/390、バージョン 3 |
TEST(NONE,SYM,SEPARATE) または
______________________________________________________________
|
| Enterprise COBOL for z/OS® バージョン 4.1 以降 |
TEST(NOHOOK,SEPARATE,EJPD) または
______________________________________________________________
|
| OS PL/I バージョン 2 リリース 1、バージョン 2 リリース 2、およびバージョン 2 リリース 3 |
TEST(ALL、SYM) または
______________________________________________________________
|
| PL/I for MVS & VM |
TEST(ALL、SYM) または
______________________________________________________________
|
| Enterprise PL/I バージョン 3.1 からバージョン 3.3 |
TEST(ALL、SYM) または
______________________________________________________________
|
| Enterprise PL/I バージョン 3.4 |
TEST(ALL,NOHOOK,SYM) または
______________________________________________________________
|
| Enterprise PL/I バージョン 3.5 以降 |
TEST(ALL,NOHOOK,SYM,SEPARATE) または
______________________________________________________________
|
| Enterprise PL/I バージョン 3.7 |
TEST(ALL,NOHOOK,SYM,SEPARATE,SOURCE) または
______________________________________________________________
|
| Enterprise PL/I バージョン 3.8 以降 |
TEST(ALL,NOHOOK,SYM,SEPARATE) および LISTVIEW または
______________________________________________________________
|
- AD/Cycle C/370™ バージョン 1 リリース 1
- C/C++ for MVS/ESA バージョン 3 リリース 1 以降
- OS/390 バージョン 2 リリース 6 以降の C++ フィーチャー
- z/OS バージョン 1.5 以前の C++ フィーチャー
|
TEST または
______________________________________________________________
|
- OS/390 バージョン 2 リリース 6 以降の C フィーチャー
- z/OS バージョン 1.5 以前の C フィーチャー
|
TEST(HOOK) または
______________________________________________________________
|
| z/OS バージョン 1.6 以降の C/C++ フィーチャー |
DEBUG(FORMAT(DWARF)) または
______________________________________________________________
|
| IBM® High Level Assembler (HLASM)、
バージョン 1 リリース 4、バージョン 1 リリース 5、バージョン 1 リリース 6 |
ADATA |
COBOL プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択
ここでは、目的のデバッグ・シナリオを実現するために指定する必要がある、TEST コンパイラー・オプションおよびサブオプションの組み合わせについて説明します。ここでは、COBOL プログラムを Enterprise COBOL for z/OS バージョン 3.4 以降でコンパイルすることを想定していますが、それより古いバージョンの COBOL コンパイラーに使用する代替策についても情報を提供します。
COBOL コンパイラーには、以下のアクションを制御するために、TEST コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- デバッグ情報のオブジェクト・ファイルまたは別のデバッグ・ファイルへの配置。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: Enterprise COBOL for z/OS バージョン 4.1 以降でコンパイルする場合、TEST(NOHOOK、SEPARATE) を使用することによって、ほとんどの Debug Tool 機能が組み込まれ、プログラムのサイズが小さくなります。
動的デバッグ機能をインストールしておく必要があり、場合によっては、「許可されたデバッグ」機能をインストールしておく必要があります。
OPT(STD) または OPT(FULL) のコンパイラー・オプションを指定してユーザー・プログラムをコンパイルする場合は、TEST コンパイラー・オプションの EJPD サブオプションも指定して、以下の作業を可能にする必要があります。
- GOTO または JUMPTO コマンドを使用する。
- 結果を予測可能な形で変数を変更する。
EJPD サブオプションを使用した場合は、一部の最適化が実現されない可能性があります。
他の問題判別ツールを使用している場合は、Enterprise COBOL for z/OS バージョン 4 プログラムの情報を参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ B: 以下のいずれかのコンパイラーを使用してコンパイルする場合は、 TEST(NONE,SYM,SEPARATE) を使用することにより、ほとんどの Debug Tool 機能と小さなプログラム・サイズを取得できます。
- Enterprise COBOL for z/OS and OS/390 バージョン 3 リリース 2 以降
- Enterprise COBOL for z/OS and OS/390、バージョン 3 リリース 1 APAR PQ63235 適用
- COBOL for OS/390 & VM、バージョン 2 リリース 2
- COBOL for OS/390 & VM バージョン 2 リリース 1、APAR PQ63234 適用
動的デバッグ機能をインストールしておく必要があり、場合によっては、「許可されたデバッグ」機能をインストールしておく必要があります。
ユーザー・プログラムのコンパイル時に最適化も行って、Debug Tool の機能を最大限得られるようにしたい場合は、以下のコンパイラー・オプションの組み合わせのうちのいずれかを指定してコンパイルを行う必要があります。
- OPT(STD) TEST(NONE,SYM)
- OPT(STD) TEST(NONE,SYM,SEPARATE)
- OPT(FULL) TEST(NONE,SYM)
- OPT(FULL) TEST(NONE,SYM,SEPARATE)
これらのタイプのプログラムでは、変数を変更することができますが、結果が予測不能になる場合があります。
他の問題判別ツールを使用している場合は、Enterprise COBOL for z/OS バージョン 3 および COBOL for OS/390 および VM プログラムの情報を参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ C: すべての Debug Tool 機能を取得できればプログラム・サイズが大きくなってもかまわず、また、デバッグ情報を分離デバッグ・ファイルに入れる必要がない場合は、以下のコンパイラー・オプションを指定のコンパイラーに使用してコンパイルします。
- TEST(HOOK,NOSEPARATE) (Enterprise COBOL for z/OS バージョン 4.1 の場合)
- TEST(ALL,SYM,NOSEPARATE) (以下のいずれかのコンパイラーの場合)
- Enterprise COBOL for z/OS and OS/390 バージョン 3 リリース 2 以降
- Enterprise COBOL for z/OS and OS/390、バージョン 3 リリース 1 APAR PQ63235 適用
- COBOL for OS/390 & VM、バージョン 2 リリース 2
- COBOL for OS/390 & VM、バージョン 2 リリース 1、APAR PQ40298 適用
他の問題判別ツールを使用している場合は、Enterprise COBOL for z/OS バージョン 4 プログラムまたは Enterprise COBOL for z/OS バージョン 3 および COBOL for OS/390 および VM プログラムの情報を参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ D: COBOL for OS/390 & VM バージョン 2 リリース 1 またはそれ以前のバージョンを使用している場合、すべての Debug Tool 機能を使用したいときは TEST(ALL,SYM) を使用します。
他の問題判別ツールを使用している場合は、使用しているコンパイラーに対応する、次のリストのトピックを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ E: NOTEST コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
他の問題判別ツールを使用している場合は、使用しているコンパイラーに対応する、次のリストのトピックを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- IMS™ を使用する COBOL プログラムの場合は、IMS RESLIB ライブラリーから IMS インターフェース・モジュール DFSLI000 を組み込んでください。
- シナリオ A、B、および E の場合、以下のステップを実行します。
- 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
- ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
- Debug Tool の始動後に、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
- 分離デバッグ・ファイルが非一時ファイルで、デバッグ・セッション中に使用可能であることを確認する。リストは保存する必要はありません。
- 次の作業を行う必要があるかどうかを確認する。
コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- Enterprise COBOL for z/OS プログラミング・ガイド にある TEST コンパイラー・オプションの記述
以下の表は、NOTEST コンパイラー・オプション、TEST コンパイラー・オプション、および TEST コンパイラー・オプションの一部のサブオプションが Debug Tool の動作、または「Enterprise COBOL for z/OS プログラミング・ガイド」で説明されていない機能の可用性に及ぼす影響を説明しています。
表 6. COBOL NOTEST コンパイラー・オプションおよび TEST コンパイラー・サブオプションの一部が Debug Tool に及ぼす影響の説明
| コンパイラー・オプションまたはサブオプションの名前 |
影響の説明 |
| NOTEST |
- プログラム・ステートメントをステップスルーすることはできません。
- プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
- プログラムに CEETEST への呼び出しを組み込んで、プログラムの実行を停止し、Debug Tool コマンドを発行することができます。
- プログラム変数を検証または使用することはできません。
- ストレージおよびレジスターをリストできます。
- コンパイラーによって作成されたソース・リストは使用できません。したがって、デバッグ・セッション中はリストを使用できません。SET DEFAULT
LISTINGS コマンドを使用しても、リストは使用できません。
- ステートメント・テーブルが使用できないため、ステートメントのブレークポイントの設定や、GOTO または QUERY LOCATION などのコマンドの使用はできません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。 |
| NONE および NOHOOK |
- 以下のいずれかのコンパイラーでコンパイルする場合は、最適化されていないプログラムをデバッグするときに、GOTO コマンドまたは JUMPTO コマンドを使用できます。
- Enterprise COBOL for z/OS バージョン 4.1
- Enterprise COBOL for z/OS and OS/390 バージョン 3 のすべてのリリース
- COBOL for OS/390 & VM バージョン 2 のすべてのリリース
Enterprise COBOL for z/OS バージョン 4.1 でプログラムをコンパイルし、TEST コンパイラー・オプションの EJPD サブオプションを指定する場合、最適化されたプログラムをデバッグするときに、GOTO コマンドまたは JUMPTO コマンドを使用できます。EJPD サブオプションを指定した場合、一部の最適化が失われる可能性があります。
- 任意の場所で CEETEST への呼び出しを使用して、Debug Tool を始動できます。
|
| EJPD |
以下のいずれかのコンパイラーによってコンパイルされた最適化プログラムで、変数を変更することができます。
- Enterprise COBOL for z/OS バージョン 4.1
- Enterprise COBOL for z/OS and OS/390 バージョン 3 リリース 2 以降
- Enterprise COBOL for z/OS and OS/390 バージョン 3 リリース 1 (APAR PQ63235 インストール済み)
- COBOL for OS/390 & VM、バージョン 2 リリース 2
- COBOL for OS/390 & VM バージョン 2 リリース 1 (APAR PQ63234 インストール済み)
ただし、結果は予測不能である場合があります。
より予測可能な結果を得るには、プログラムを Enterprise COBOL for z/OS バージョン 4.1 でコンパイルし、TEST コンパイラー・オプションの EJPD サブオプションを指定します。ただし、初期設定するために VALUE 文節を指定して宣言された変数は、変更できません。 |
| NOSYM |
- プログラム変数を名前で参照できません。
- LIST や DESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
- CALL 変数などのコマンドを使用して別のプログラムに分岐したり、GOTO コマンドを使用して別のラベル (パラグラフまたはセクション名) に分岐したりすることはできません。
Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは SYM または NOSYM を無視し、常にシンボル・テーブルを作成します。 |
| STMT |
- COBOL コンパイラーは、DATEPROC コンパイラー・オプションが指定された場合にのみ、日付処理ステートメント用にコンパイル時に挿入するフックを生成します。日付処理ステートメントは、日付フィールドを参照するステートメント、すなわち、日付フィールドを参照する EVALUATE または SEARCH ステートメントの WHEN 句です。
- すべてのステートメントにブレークポイントを設定し、プログラムをステップスルーできます。
- パス点がステートメントの境界でもある場合を除き、Debug Tool がパス点で制御を得ることはできません。
- Debug Tool コマンド GOTO を使用して、すべてのステートメントおよびラベルに分岐することができます。
Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合は、コンパイラーは、STMT サブオプションを、HOOK サブオプション (すべてのリリースの Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 での ALL サブオプションと同等) と同じように処理します。 |
| PATH |
- Debug Tool は、パス点と、ブロックの入り口点、および出口点でのみ制御を得ることができます。プログラムをステップスルーしようとすると、Debug Tool はパス点と一致するステートメントでのみ制御を得るため、一部のステートメントは実行されないように見えます。
- 任意の場所で CEETEST への呼び出しを使用して、Debug Tool を始動できます。
- Debug Tool コマンド GOTO は、パス点と一致するすべてのステートメントおよびラベルに対して有効です。
Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは PATH サブオプションを HOOK サブオプション (このサブオプションは、Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 のすべてのリリースにおける ALL サブオプションに相当します) であるかのように取り扱います。 |
| BLOCK |
- Debug Tool は、ユーザー・プログラム、メソッド、およびネストされたプログラムの入り口と出口で制御を得ます。
- CEETEST への呼び出しを使用して、Debug Tool を任意の場所で明示的に始動できます。
- STEP などのコマンドを発行すると、次の入り口点または出口点に達するまでプログラムが実行されます。
- GOTO コマンドを使用すると、ブロックの入り口点または出口点と一致するステートメントへの分岐ができます。
Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは BLOCK サブオプションを HOOK サブオプション (このサブオプションは、Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 のすべてのリリースにおける ALL サブオプションに相当します) であるかのように取り扱います。 |
| ALL |
- すべてのステートメントおよびパス点にブレークポイントを設定し、プログラムをステップスルーできます。
- Debug Tool は、すべてのステートメント、パス点、日付処理ステートメント、ラベル、ブロックの入り口点および出口点でプログラムの制御を得ることができ、ユーザーは Debug Tool コマンドの入力が可能になります。
- Debug Tool コマンド GOTO を使用して、ステートメントおよびラベルに分岐することができます。
Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは ALL サブオプションを HOOK サブオプション (このサブオプションは、Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 のすべてのリリースにおける ALL サブオプションに相当します) であるかのように取り扱います。 |
PL/I プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択
ここでは、目的のデバッグ・シナリオを実現するために指定する必要がある、TEST コンパイラー・オプションおよびサブオプションの組み合わせについて説明します。ここでは、PL/I プログラムを Enterprise PL/I for z/OS バージョン 3.5 以降でコンパイルすることを想定していますが、それより古いバージョンの PL/I コンパイラーに使用する代替策についても情報を提供します。
PL/I コンパイラーには、以下のアクションを制御するために、TEST コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- オブジェクト・ファイルまたは分離デバッグ・ファイルへのデバッグ情報の配置。
Debug Tool は、最適化された PL/I プログラムのデバッグをサポートしません。
NOOPTIMIZE 以外のコンパイラー・オプションは使用しないでください。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: Enterprise PL/I for z/OS バージョン 3.8 以降を使用しており、ほとんどの Debug Tool 機能と小さなプログラム・サイズを取得したい場合は、TEST(ALL,NOHOOK,SYM,SEPARATE) および LISTVIEW(SOURCE) コンパイラー・オプションを使用します。使用しているサイトが動的デバッグ機能をインストール済みであること、また、保護ストレージにロードされたプログラムをデバッグする必要がある場合は、「許可されたデバッグ」機能がインストールされていることを確認してください。
以下のオプションを考慮してください。
- 「Enterprise PL/I for z/OS プログラミング・ガイド」に説明されているように、LISTVIEW サブオプションのいずれか (SOURCE、AFTERALL、AFTERCICS、AFTERMACRO、または AFTERSQL) を指定して、元のソースまたは指定されたプリプロセッサーの後のソースを表示できます。
- フルスクリーン・モードでデバッグする場合に、実行可能コードを持つ INCLUDE ファイルを使用してプログラムをデバッグするときは、LISTVIEW(AFTERMACRO) コンパイラー・オプションを指定します。MACRO コンパイラー・オプションを指定しない場合は、PP(MACRO(INCONLY)) コンパイラー・オプションを指定します。
- リモート・デバッグ・モードでデバッグする場合に、INCLUDE ファイル内の変数を自動モニターするときは、LISTVIEW(AFTERMACRO) コンパイラー・オプションを指定します。MACRO コンパイラー・オプションを指定しない場合は、PP(MACRO(INCONLY)) コンパイラー・オプションを指定します。
他の問題判別ツールを使用している場合は、Enterprise PL/I バージョン 3.5 以降のプログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ B: Enterprise PL/I for z/OS バージョン 3.7 を使用しており、ほとんどの Debug Tool 機能と小さなプログラム・サイズを取得したい場合は、TEST(ALL,NOHOOK,SYM,SEPARATE,SOURCE) を使用します。使用しているサイトが動的デバッグ機能をインストール済みであること、また、保護ストレージにロードされたプログラムをデバッグする必要がある場合は、「許可されたデバッグ」機能がインストールされていることを確認してください。
以下のオプションを考慮してください。
- 「Enterprise PL/I for z/OS プログラミング・ガイド」の説明のように、SOURCE は AFTERALL、AFTERCICS、AFTERMACRO、または AFTERSQL で置き換えることができます。
- フルスクリーン・モードでデバッグする場合に、実行可能コードを持つ INCLUDE ファイルを使用してプログラムをデバッグするときは、TEST(ALL,NOHOOK,SYM,SEPARATE,AFTERMACRO) コンパイラー・オプションを指定します。MACRO コンパイラー・オプションを指定しない場合は、PP(MACRO(INCONLY)) コンパイラー・オプションを指定します。
- リモート・デバッグ・モードでデバッグする場合に、INCLUDE ファイル内の変数を自動モニターするときは、TEST(ALL,NOHOOK,SYM,SEPARATE,AFTERMACRO) コンパイラー・オプションを指定します。MACRO コンパイラー・オプションを指定しない場合は、PP(MACRO(INCONLY)) コンパイラー・オプションを指定します。
他の問題判別ツールを使用している場合は、Enterprise PL/I バージョン 3.5 以降のプログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ C: Enterprise PL/I for z/OS バージョン 3.5 または 3.6 を使用しており、ほとんどの Debug Tool 機能と小さなプログラム・サイズを取得したい場合は、TEST(ALL,NOHOOK,SYM,SEPARATE) を使用します。動的デバッグ機能がインストールされている必要があり、許可されたデバッグ機能もインストールする必要がある場合があります。
他の問題判別ツールを使用している場合は、Enterprise PL/I バージョン 3.5 以降のプログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ D: Enterprise PL/I for z/OS
バージョン 3.4 を使用しており、コンパイル時に挿入されるフックがないプログラムをデバッグする場合は、TEST(ALL,NOHOOK,SYM) を使用します。動的デバッグ機能がインストールされている必要があり、許可されたデバッグ機能もインストールする必要がある場合があります。
他の問題判別ツールを使用している場合は、Enterprise PL/I バージョン 3.4 以前のプログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ E: Enterprise PL/I for z/OS バージョン 3.3 またはそれ以前のバージョンを使用している場合、すべての Debug Tool 機能を使用したいときは TEST(ALL,SYM) を使用します。
他の問題判別ツールを使用している場合は、Enterprise PL/I バージョン 3.4 以前のプログラムまたは PL/I for MVS and VM プログラムと OS PL/I プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ F: NOTEST コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
他の問題判別ツールを使用している場合は、使用しているコンパイラーに対応する、次のリストのトピックを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ A、B、C、E、および F の場合は、以下のステップを実行します。
- 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
- ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
- Debug Tool の始動後に、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
- 分離デバッグ・ファイルが非一時ファイルで、デバッグ・セッション中に使用可能であることを確認する。
- 次の作業を行う必要があるかどうかを確認する。
コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。
表 7. PL/I NOTEST コンパイラー・オプションおよび TEST コンパイラー・サブオプションが Debug Tool に及ぼす影響の説明
| コンパイラー・オプションまたはサブオプションの名前 |
影響の説明 |
| NOTEST |
NOTEST コンパイラー・オプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。
- ストレージおよびレジスターをリストできます。
- プログラムに PLITEST または CEETEST への呼び出しを組み込むことにより、プログラムの実行を一時的に中断し、Debug Tool コマンドを発行できます。
- プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
- プログラム変数を検証または使用することはできません。
- ステートメント・レベルのフックは挿入されないため、ステートメントのブレークポイントの設定や、GOTO、QUERY LOCATION などのコマンドの使用はできません。
- コンパイラーによって作成されたソース・リストは使用できません。したがって、デバッグ・セッション中はリストを使用できません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。 |
| NOHOOK |
TEST コンパイラー・オプションの NOHOOK サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。
以下のリストは、それらの変更の説明です。
- Debug Tool でオーバーレイ・フックを生成するためには、サブオプション ALL、PATH、STMT、または BLOCK のいずれか 1 つが有効であることが必要ですが、HOOK を指定する必要はなく、NOHOOK を指定することをお勧めします。
- NOHOOK を指定した場合、Debug Tool が停止する PATH ブレークポイントは、ENTRY および EXIT ブレークポイントのみです。
|
| NONE |
TEST コンパイラー・オプションの NONE サブオプションを使用して PL/I プログラムをコンパイルする場合、プログラム内に PLITEST または CEETEST の呼び出しを書き込むことにより、プログラム内の任意の点で Debug Tool を始動できます。 |
| SYM |
TEST コンパイラー・オプションの SYM サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。
以下のリストは、それらの変更の説明です。
- すべてのプログラム変数を名前で参照できます。これにより、プログラム変数の検証や式での使用、PLAYBACK ENABLE コマンドの DATA パラメーターの使用が可能になります。
- SET AUTOMONITOR ON コマンドのサポートが使用可能になります。
- GOTO の宛先としてのラベルのサポートが使用可能になります。
|
| NOSYM |
TEST コンパイラー・オプションの NOSYM サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。
以下のリストは、それらの変更の説明です。
- プログラム変数を名前で参照できません。
- LIST や DESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
- CALL 変数などのコマンドを使用して別のプログラムに分岐したり、GOTO コマンドを使用して別のラベル (プロシージャーまたはブロック名) に分岐したりすることはできません。
|
| BLOCK |
TEST コンパイラー・オプションの BLOCK サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。
以下のリストは、それらの変更の説明です。
- Debug Tool は、ブロックの境界、すなわち、ブロックの入り口および出口で制御を得ます。
- 動的デバッグがアクティブでなく、HOOK コンパイラー・オプションを使用する場合、ユーザーが制御を得られるのは、プログラムの入り口点および出口点と、内部プログラム・ブロックのすべての入り口点および出口点のみです。例えば、STEP コマンドを入力すると、次のブロックの入り口点または出口点に達するまでプログラムが実行されます。
- 動的デバッグがアクティブな場合、すべてのステートメントにブレークポイントを設定し、プログラムをステップスルーできます。
- PATH も指定した場合を除き、パス点で制御を得ることはできません。
- PLITEST または CEETEST への呼び出しを使用すると、Debug Tool をプログラムの任意の場所で始動できます。
- フックは、空の ON ユニットまたは単一の GOTO ステートメントで構成される ON ユニットには挿入されません。
|
| STMT |
TEST コンパイラー・オプションの STMT サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。
以下のリストは、それらの変更の説明です。
- すべてのステートメントにブレークポイントを設定し、プログラムをステップスルーできます。
- パス点がステートメントの境界でもある場合を除き、Debug Tool がパス点で制御を得ることはできません。ただし、PATH も指定した場合は除きます。
- Debug Tool コマンド GOTO を使用して、すべてのステートメントおよびラベルに分岐することができます。
|
| ALL |
TEST コンパイラー・オプションの ALL サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。
以下のリストは、それらの変更の説明です。
- すべてのステートメントおよびパス点にブレークポイントを設定し、プログラムをステップスルーできます。
- Debug Tool は、すべてのステートメント、パス点、ラベル、ブロックの入り口点および出口点でプログラムの制御を得ることができ、ユーザーは Debug Tool コマンドの入力が可能になります。
- Debug Tool コマンド GOTO を使用すると、ステートメントおよびラベルへの分岐ができます。
|
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- 「Enterprise PL/I for z/OS プログラミング・ガイド」の TEST コンパイラー・オプションの説明。
C プログラムでの TEST または DEBUG コンパイラー・サブオプションの選択
このトピックでは、必要なデバッグ・シナリオを得るために指定する必要がある TEST または DEBUG コンパイラー・オプションとサブオプションの組み合わせを説明します。
ここでは、C プログラムを z/OS C/C++ バージョン 1.6 以降でコンパイルすることを想定していますが、それより古いバージョンの C コンパイラーに使用する代替策についても情報を提供します。
TEST と DEBUG コンパイラー・オプションのどちらを選択する
z/OS C/C++ バージョン 1.5 以前を使用してコンパイルしている場合は、
TEST コンパイラー・オプションを選択する必要があります。
C/C++ コンパイラー・オプション DEBUG が z/OS C/C++ バージョン 1.5 で導入されました。Debug Tool は、z/OS C/C++ バージョン 1.6 以降で、DEBUG コンパイラー・オプションをサポートします。
DEBUG コンパイラー・オプションは、コンパイラーの前のバージョンで使用できた TEST コンパイラー・オプションに換わるものです。
z/OS C/C++ バージョン 1.6 以降を使用してコンパイルしている場合は、DEBUG コンパイラー・オプションを選択して、
以下の長所を利用します。
- C++ プログラムの場合、デバッグのパフォーマンスを向上することができる HOOK(NOBLOCK) コンパイラー・オプションを指定することができます。
- C および C++ プログラムの場合、DEBUG コンパイラー・オプションの FORMAT(DWARF) サブオプションを指定すると、
ロード・モジュールはより小さくなります。ただし、ソース・ファイルの他に .dbg ファイルも保存する必要があります。
Debug Tool ではプログラムをデバッグするために、
これらのファイルの両方が必要です。
- z/OS XL C/C++ バージョン 1.10 以降を使用してコンパイルされた C および C++ プログラムの場合、
DEBUG コンパイラー・オプションの FORMAT(DWARF) サブオプションを指定すると、
ロード・モジュールはより小さくなり、取り込まれたソースで .mdbg ファイルを作成できます。Debug Tool ではプログラムをデバッグするために、
.mdbg ファイルのみが必要です。
C プログラム用 DEBUG コンパイラー・サブオプションの選択
ここでは、使用可能なデバッグ・シナリオと、正しい DEBUG コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。
C コンパイラーには、以下のアクションを制御するために、DEBUG コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- オブジェクト・ファイルまたは分離デバッグ・ファイルへのデバッグ情報の配置。
Debug Tool は、最適化された C プログラムのデバッグをサポートしません。
NOOPTIMIZE または OPTIMIZE(0) 以外の OPTIMIZE コンパイラー・オプションを使用しないでください。
以下の説明は、プログラムのデバッグに必要な機能を提供する DEBUG コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: ほとんどの Debug Tool 機能を、より小さなプログラム・サイズ、およびよりよいパフォーマンスで取得するには、以下の組み合わせのいずれかを使用します。
- シナリオ A1: DEBUG(FORMAT(DWARF),HOOK(LINE,NOBLOCK,PATH),SYMBOL,FILE(file_location)) と .mdbg ファイルの作成
- シナリオ A2: DEBUG(FORMAT(DWARF),HOOK(LINE,NOBLOCK,PATH),SYMBOL,FILE(file_location)) と .dbg ファイルのみ使用
- シナリオ B: すべての Debug Tool 機能を取得できればプログラム・サイズが大きくなってもかまわず、また、デバッグ情報を分離ファイルに入れる必要がない場合は、次の組み合わせを使用します。
DEBUG(FORMAT(ISD),HOOK(LINE,NOBLOCK,PATH),SYMBOL)
- シナリオ C: NODEBUG コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
どのシナリオの場合も、他の問題判別ツールを使用している場合は、z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- 選択したシナリオについて、以下のリソースがあることを確認してください。
- シナリオ A の場合、次の作業を行います。
- .mdbg ファイルを作成する場合には、以下の作業を実行します。
- 実行中の製品について、以下の PTF を適用していることを確認します。
- z/OS XL C/C++ バージョン 1.10 の場合:
UK50219、UK50245、UK50246、UK50645
- z/OS XL C/C++ バージョン 1.11 の場合:
UK51669、UK51670、UK51671
- z/OS ランタイム・ライブラリー拡張機能 バージョン 1.10、(UTIL、CDA、DBGLD) の場合:
UK50221、UK50652、UK50220、UK50252
- z/OS 言語環境プログラム バージョン 1.10 の場合:
UK51883
- z/OS ランタイム・ライブラリー拡張機能 バージョン 1.10、(UTIL、CDA、DBGLD) の場合:
UK51674、UK51673、UK52065、UK51803
- EQAOPTS オプション・ファイル内で EQAXOPT MDBG,YES オプションを指定します
(この場合、Debug Tool が .mdbg ファイル内で .dbg ファイルを検索する必要があります)。1
- .dbg ファイルが一時ファイルでないことを確認します。
- dbgld コマンドの -c オプション、または CDADBGLD ユーティリティーの CAPSRC オプションを使用して
取り込まれたソースで .mdbg ファイルを作成します。
- .mdbg ファイルが一時ファイルでないことを確認します。
- .dbg ファイルのみを使用する場合は、
.dbg ファイルが一時ファイルでないことを確認し、
EQAOPTS オプション・ファイル内で EQAXOPT MDBG,NO オプションを指定します。2
- シナリオ C の場合、次の手順を行います。
- z/OS バージョン 1.6 またはバージョン 1.7 で実行している場合は、言語環境プログラムの APAR PK12833 用の PTF がインストールされていることを確認します。
- 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
- ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
- Debug Tool の始動後に、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
- 次の作業を行う必要があるかどうかを確認する。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド にある DEBUG コンパイラー・オプションの記述
C プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択
ここでは、使用可能なデバッグ・シナリオと、正しい TEST コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。
C コンパイラーは、TEST コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。
Debug Tool は、最適化された C プログラムのデバッグをサポートしません。
NOOPTIMIZE 以外のコンパイラー・オプションは使用しないでください。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: すべての Debug Tool 機能を取得できれば、(DEBUG(FORMAT(DWARF)) を使用した場合に比べて) プログラム・サイズが大きくなってもかまわない場合は、TEST(ALL,HOOK,SYMBOL) を使用します。
- シナリオ B: NOTEST コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
- シナリオ C: ALCS で実行されているプログラムをデバッグする場合は、TEST コンパイラー・オプションの HOOK サブオプションを使用してコンパイルする必要があります。
どのシナリオの場合も、他の問題判別ツールを使用している場合は、z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ B の場合、次の手順を行います。
- z/OS バージョン 1.6 またはバージョン 1.7 で実行している場合は、言語環境プログラムの APAR PK12833 用の PTF がインストールされていることを確認します。
- 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
- ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
- Debug Tool の始動後に、SET DYNDEBUG OFF コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
- 次の作業を行う必要があるかどうかを確認する。
表 8. C の NOTEST コンパイラー・オプションおよび TEST コンパイラー・サブオプションが Debug Tool に及ぼす影響の説明
| コンパイラー・オプションまたはサブオプションの名前 |
影響の説明 |
| NOTEST |
以下のリストは、NOTEST コンパイラー・オプションが Debug Tool の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。
- プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
- プログラム変数を検証または使用することはできません。
- ストレージおよびレジスターをリストできます。
- Debug Tool の GOTO コマンドは使用できません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。 |
| TEST |
以下のリストは、TEST コンパイラー・オプションの一部のサブオプションが Debug Tool の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。
- 1 つのソース・ファイルの最大行数が 131,072 を越えてはいけない。
- 実行可能ステートメントを保管する組み込みファイルの最大数が 1024 を越えてはいけない。
|
| NOSYM |
以下のリストは、TEST コンパイラー・オプションの NOSYM サブオプションが、Debug Tool の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。
- プログラム変数を名前で参照できません。
- LIST や DESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
- CALL や GOTO などのコマンドを使用して別のラベル (パラグラフまたはセクション名) に分岐することはできません。
|
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド にある TEST コンパイラー・オプションの記述
#pragma ステートメントによる C プログラムのコンパイル
TEST/NOTEST コンパイラー・オプションは、プログラムをコンパイルするときに、または直接プログラム内で、#pragma を使用して指定することができます。
この #pragma は、プログラム内でどの実行可能コード
よりも前になければなりません。
次の例では、シンボル・テーブル情報、ネストされたブロックのシンボル情報、および行番号でのフックが生成されます。
#pragma options (test(SYM,BLOCK,LINE))
これは TEST(SYM,BLOCK,LINE,PATH) と同等です。
また、#pragma を使用して
ランタイム・オプションを指定することもできます。
関数およびネストされたブロックでのフックの配置規則
関数およびネストされたブロックに出入りする際のフックの配置には、次の規則が適用されます。
- 関数入り口のフックは、その関数のどの初期設定またはステートメントよりも
前に置かれます。
- 関数出口のフックは、実際に関数が戻される直前に置かれます。
- ネストされたブロックの入り口のフックは、そのブロックのどのステートメントまたは初期設定よりも前に置かれます。
- ネストされたブロック出口のフックは、そのブロックのすべてのステートメント
の後に置かれます。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド
ステートメントおよびパス点でのフックの配置規則
ステートメントおよびパス点用のフックの配置には、次の規則が適用されます。
- ラベル・フックは、そのステートメントのコードおよびその他のすべての
ステートメントまたはパス点のフックよりも前に置かれます。
- ステートメント・フックは、そのステートメントのコードおよびパス点の
フックよりも前に置かれます。
- ステートメントのパス点フックは、そのステートメントのコードの
前に置かれます。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド
C++ プログラム用 TEST または DEBUG コンパイラー・サブオプションの選択
このトピックでは、必要なデバッグ・シナリオを得るために指定する必要がある TEST または DEBUG コンパイラー・オプションとサブオプションの組み合わせを説明します。
ここでは、C++ プログラムを z/OS C/C++ バージョン 1.6 以降でコンパイルすることを想定していますが、それより古いバージョンの C++ コンパイラーに使用する代替策についても情報を提供します。
TEST と DEBUG コンパイラー・オプションのどちらを選択する
z/OS C/C++ バージョン 1.5 以前を使用してコンパイルしている場合は、
TEST コンパイラー・オプションを選択する必要があります。
C/C++ コンパイラー・オプション DEBUG が z/OS C/C++ バージョン 1.5 で導入されました。Debug Tool は、z/OS C/C++ バージョン 1.6 以降で、DEBUG コンパイラー・オプションをサポートします。
DEBUG コンパイラー・オプションは、コンパイラーの前のバージョンで使用できた TEST コンパイラー・オプションに換わるものです。
z/OS C/C++ バージョン 1.6 以降を使用してコンパイルしている場合は、DEBUG コンパイラー・オプションを選択して、
以下の長所を利用します。
- C++ プログラムの場合、デバッグのパフォーマンスを向上することができる HOOK(NOBLOCK) コンパイラー・オプションを指定することができます。
- C および C++ プログラムの場合、DEBUG コンパイラー・オプションの FORMAT(DWARF) サブオプションを指定すると、
ロード・モジュールはより小さくなります。ただし、ソース・ファイルの他に .dbg ファイルも保存する必要があります。
Debug Tool ではプログラムをデバッグするために、
これらのファイルの両方が必要です。
- z/OS XL C/C++ バージョン 1.10 以降を使用してコンパイルされた C および C++ プログラムの場合、
DEBUG コンパイラー・オプションの FORMAT(DWARF) サブオプションを指定すると、
ロード・モジュールはより小さくなり、取り込まれたソースで .mdbg ファイルを作成できます。Debug Tool ではプログラムをデバッグするために、
.mdbg ファイルのみが必要です。
C++ プログラム用 DEBUG コンパイラー・サブオプションの選択
ここでは、使用可能なデバッグ・シナリオと、正しい DEBUG コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。
C++ コンパイラーには、以下のアクションを制御するために、DEBUG コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- オブジェクト・ファイルまたは分離デバッグ・ファイルへのデバッグ情報の配置。
Debug Tool は、最適化された C プログラムのデバッグをサポートしません。
NOOPTIMIZE または OPTIMIZE(0) 以外の OPTIMIZE コンパイラー・オプションを使用しないでください。
以下の説明は、プログラムのデバッグに必要な機能を提供する DEBUG コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: ほとんどの Debug Tool 機能を、より小さなプログラム・サイズ、およびよりよいパフォーマンスで取得するには、以下の組み合わせのいずれかを使用します。
- シナリオ A1: DEBUG(FORMAT(DWARF),HOOK(LINE,NOBLOCK,PATH),SYMBOL,FILE(file_location)) と .mdbg ファイルの作成
- シナリオ A2: DEBUG(FORMAT(DWARF),HOOK(LINE,NOBLOCK,PATH),SYMBOL,FILE(file_location)) と .dbg ファイルのみ使用
- シナリオ B: すべての Debug Tool 機能を取得できればプログラム・サイズが大きくなってもかまわず、また、デバッグ情報を分離ファイルに入れる必要がない場合は、次の組み合わせを使用します。
DEBUG(FORMAT(ISD),HOOK(LINE,NOBLOCK,PATH),SYMBOL)
- シナリオ C: NODEBUG コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
どのシナリオの場合も、他の問題判別ツールを使用している場合は、z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- 選択したシナリオについて、以下のリソースがあることを確認してください。
- シナリオ A の場合、次の作業を行います。
- .mdbg ファイルを作成する場合には、以下の作業を実行します。
- 実行中の製品について、以下の PTF を適用していることを確認します。
- z/OS XL C/C++ バージョン 1.10 の場合:
UK50219、UK50245、UK50246、UK50645
- z/OS XL C/C++ バージョン 1.11 の場合:
UK51669、UK51670、UK51671
- z/OS ランタイム・ライブラリー拡張機能 バージョン 1.10、(UTIL、CDA、DBGLD) の場合:
UK50221、UK50652、UK50220、UK50252
- z/OS 言語環境プログラム バージョン 1.10 の場合:
UK51883
- z/OS ランタイム・ライブラリー拡張機能 バージョン 1.10、(UTIL、CDA、DBGLD) の場合:
UK51674、UK51673、UK52065、UK51803
- EQAOPTS オプション・ファイル内で EQAXOPT MDBG,YES オプションを指定します
(この場合、Debug Tool が .mdbg ファイル内で .dbg ファイルを検索する必要があります)。3
- .dbg ファイルが一時ファイルでないことを確認します。
- dbgld コマンドの -c オプション、または CDADBGLD ユーティリティーの CAPSRC オプションを使用して
取り込まれたソースで .mdbg ファイルを作成します。
- .mdbg ファイルが一時ファイルでないことを確認します。
- .dbg ファイルのみを使用する場合は、
.dbg ファイルが一時ファイルでないことを確認し、
EQAOPTS オプション・ファイル内で EQAXOPT MDBG,NO オプションを指定します。4
- シナリオ C の場合、次の手順を行います。
- z/OS バージョン 1.6 またはバージョン 1.7 で実行している場合は、言語環境プログラムの APAR PK12833 用の PTF がインストールされていることを確認します。
- 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
- ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
- Debug Tool の始動後に、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
- 次の作業を行う必要があるかどうかを確認する。
コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド にある DEBUG コンパイラー・オプションの記述
C++ プログラム用の TEST または NOTEST コンパイラー・オプションの選択
ここでは、使用可能なデバッグ・シナリオと、正しい TEST コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。
C++ コンパイラーは、TEST コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。
Debug Tool は、最適化された C++ プログラムのデバッグをサポートしません。
NOOPTIMIZE 以外のコンパイラー・オプションは使用しないでください。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: すべての Debug Tool 機能を取得できれば、(DEBUG(FORMAT(DWARF)) を使用した場合に比べて) プログラム・サイズが大きくなってもかまわない場合は、TEST を使用します。
- シナリオ B: NOTEST コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
- シナリオ C: ALCS で実行されているプログラムをデバッグする場合は、TEST コンパイラー・オプションの HOOK サブオプションを使用してコンパイルする必要があります。
どのシナリオの場合も、他の問題判別ツールを使用している場合は、z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- 次の作業を行う必要があるかどうかを確認する。
コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。
表 9. C++ の NOTEST および TEST コンパイラー・オプションが Debug Tool に及ぼす影響の説明
| コンパイラー・オプションまたはサブオプションの名前 |
影響の説明 |
| NOTEST |
以下のリストは、NOTEST コンパイラーが、「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていない Debug Tool の動作に及ぼす影響を説明したものです。
- プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
- プログラム変数を検証または使用することはできません。
- ストレージおよびレジスターをリストできます。
- Debug Tool の GOTO コマンドは使用できません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。 |
| TEST |
次のリストは、TEST コンパイラー・オプションの、Debug Tool の動作に対する影響について説明したものです。これらは、「z/OS XL C/C++ ユーザーズ・ガイド」では説明されていません。
- 1 つのソース・ファイルの最大行数が 131,072 を越えてはいけない。
- 実行可能ステートメントを保管する組み込みファイルの最大数が 1024 を越えてはいけない。
|
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド にある TEST コンパイラー・オプションの記述
関数およびネストされたブロックでのフックの配置規則
関数およびネストされたブロックのフックの配置には、次の規則が適用されます。
- 関数入り口のフックは、その関数のどの初期設定またはステートメントよりも
前に置かれます。
- 関数出口のフックは、実際に関数が戻される直前に置かれます。
- ネストされたブロックの入り口のフックは、そのブロックのどのステートメントまたは初期設定よりも前に置かれます。
- ネストされたブロック出口のフックは、そのブロックのすべてのステートメント
の後に置かれます。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド
ステートメントおよびパス点でのフックの配置規則
ステートメントおよびパス点用のフックの配置には、次の規則が適用されます。
- ラベル・フックは、そのステートメントのコードおよびその他のすべての
ステートメントまたはパス点のフックよりも前に置かれます。
- ステートメント・フックは、そのステートメントのコードおよびパス点の
フックよりも前に置かれます。
- ステートメントのパス点フックは、そのステートメントのコードの
前に置かれます。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- z/OS XL C/C++ ユーザーズ・ガイド
フックの機能およびフックが必要な理由の説明
フックを使用すると、ブレークポイントを設定できます。フックとは、コンパイル時にコンパイラーによってプログラムに挿入される
命令のことです。フックは、ブロックの入り口と出口、ステートメント境界、およびステートメント境界間でプログラムの流れが変わる可能性のあるプログラム内の場所 (パス点と呼ばれる) に置かれます。TEST コンパイラー・オプションを使用してプログラムをコンパイルし、NONE (または NOHOOK) 以外のサブオプションを指定すると、コンパイラーがプログラムにフックを挿入します。
動的デバッグ機能を使用して、フックなしで最大のパフォーマンスを得る方法
以下の状態では、フックなしでプログラムをコンパイルまたは作成することができます。
その後、ブレークポイントを設定するか STEP コマンドを入力するときはいつでも動的デバッグ機能を使用して、実行時にフックを挿入できます。
- アセンブラー、逆アセンブリー、非言語環境プログラム COBOL プログラムにはフックは含まれません。
- Enterprise COBOL for z/OS バージョン 4.1 を使用する場合は、TEST(NOHOOK) コンパイラー・オプションを使用することにより、フックなしでプログラムをコンパイルできます。
- 次のいずれかのコンパイラーを使用する場合は、TEST(NONE) コンパイラー・オプションを使用すると、フックなしでプログラムをコンパイルできます。
- Enterprise COBOL for z/OS and OS/390、バージョン 3
- COBOL for OS/390 & VM、バージョン 2 リリース 2
- COBOL for OS/390 & VM、バージョン 2 リリース 1、APAR PQ40298 適用
- Enterprise PL/I for z/OS バージョン 3.4 以降のコンパイラーを使用する場合は、TEST(NOHOOK) コンパイラー・オプションを使用することにより、フックなしでプログラムをコンパイルできます。
動的デバッグ機能を使用することによって、次のいずれかのコンパイラーでコンパイルされた
プログラムのデバッグ時の Debug Tool のパフォーマンスを向上させることもできます。
- Debug Tool でサポートされる任意の COBOL コンパイラー
- Debug Tool でサポートされる任意の PL/I コンパイラー
- Debug Tool でサポートされる任意の C/C++ コンパイラー
次のいずれかのコンパイラーを使用してコンパイルし、コンパイラーにフックを挿入させる場合は、動的デバッグ機能を使用することによって、デバッグ時のプログラムのパフォーマンスを向上させることができます。
- Debug Tool でサポートされる任意の COBOL コンパイラー
- Debug Tool でサポートされる任意の PL/I コンパイラー
- Debug Tool でサポートされる任意の C/C++ コンパイラー
Debug Tool の始動時に、動的デバッグ機能がアクティブ化されます。
Debug Tool は、コンパイラーでなく、動的デバッグ機能によって挿入されたフックを使用します。したがって、一部のパス・ブレークポイントは、使用不可になる場合があります。それらのブレークポイントを使用する必要がある場合は、SET DYNDEBUG OFF コマンドを入力して、動的デバッグ機能を非アクティブにします。その場合、Debug Tool は、動的デバッグ機能でなく、コンパイラーによって挿入されたフックを使用します。
シンボル・テーブルの機能、および、シンボル・テーブルを他の場所に保存するとアプリケーションを小さくできる理由の説明
シンボル・テーブルには、変数、その属性、およびストレージ内での位置についての説明が含まれます。Debug Tool は、変数を参照するときにこれらの記述を使用します。シンボル・テーブルは、プログラムのオブジェクト・ファイルまたは個々のデバッグ・ファイルに保存できます。次のいずれかのコンパイラーまたはアセンブラーを使用してプログラムをコンパイルまたはアセンブルする場合は、シンボル・テーブルを個別のデバッグ・ファイルに保存できます。
- Enterprise COBOL for z/OS バージョン 4.1
- Enterprise COBOL for z/OS and OS/390、バージョン 3
- COBOL for OS/390 & VM、バージョン 2 リリース 2
- COBOL for OS/390 & VM、バージョン 2 リリース 1、APAR PQ40298 適用
- OS/VS COBOL バージョン 1 リリース 2.4
- Enterprise PL/I for z/OS バージョン 3 リリース 5 以降
- High Level Assembler for MVS & VM & VSE リリース 4 以降
シンボル・テーブルを個々のデバッグ・ファイルに保存することにより、プログラムのロード・モジュールのサイズを小さくすることができます。
C および C++ プログラムの場合、DEBUG コンパイラー・オプションの FORMAT(DWARF) サブオプションを指定することで、デバッグ・テーブルを分離デバッグ・ファイル (.dbg ファイル) に保存することができます。Debug Tool は、z/OS C/C++ バージョン 1.6 以降で提供される、DEBUG コンパイラー・オプションをサポートします。
デバッグ・モードの選択
以下のリストを使用して、ユーザーのプログラムで使用するデバッグ・モードを決定してください。
- TSO プログラムの場合
- フルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- JES バッチ・プログラムの場合
- バッチ・プログラムと対話する場合は、専用端末を使用するフルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用してバッチ・プログラムと対話する場合は、リモート・デバッグ・モードを選択します。バッチ・プログラムと対話しない場合は、バッチ・モードを使用し、コマンド・ファイルによりコマンドを指定し、ログ・ファイル内の結果を検討します。
- UNIX® システム・サービス・プログラムの場合
- 専用端末を使用するフルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- CICS® プログラムの場合
- 3270 装置で Debug Tool と対話する場合は、フルスクリーン・モードを選択し、以下のいずれかの端末モードを選択します。
- 単一端末モード: アプリケーション・プログラムと Debug Tool が同一端末を共用します。この端末モードは、3270 端末と対話するトランザクションをデバッグするために使用します。ユーザーの CADP プロファイルまたは DTCN プロファイルを作成するときは、ディスプレイ装置を、アプリケーション・プログラムが使用する端末 ID に設定してください。
- 画面制御モード: Debug Tool は、DTSC トランザクションを実行している端末にその画面を表示します。
画面制御モードを使用すると、DTSC トランザクションは、ユーザー選択端末上のアプリケーション・プログラムと同じ領域で実行されます。そして、デバッグ中のタスク (固有の端末を持たない場合がある) のために Debug Tool 画面を表示します。
画面制御モードは、端末に通常関連付けられていない、MRO 環境で実行されるアプリケーション・プログラムをデバッグするために使用します。
画面制御モードは以下の方法で機能させます。
- Debug Tool を表示するために使用する端末で、DTSC を入力します。この端末は、アプリケーション・プログラムが実行される領域に直接接続できます。あるいは、CRTE またはトランザクション・ルーティングを使用して、その領域に接続できます。トランザクション・ルーティングを使用する場合、アプリケーション・プログラムが使用しているのと同じ領域で DTSC が実行されるようにしなければなりません。
- ユーザーの DTCN プロファイルまたは CADP プロファイルのディスプレイ装置を、DTSC トランザクションを実行する端末に設定します。
- アプリケーション・プログラムを始動します。
- DTSC トランザクションを実行している端末で Enter を押して、Debug Tool に接続します。
- 独立端末モード (以前は
二重端末モード と呼ばれていた): Debug Tool は端末で動的に CDT# トランザクションを開始します。
独立端末モードは、端末と通常関連付けられていないアプリケーション・プログラムをデバッグするために使用します。ユーザーの端末は、アプリケーション・プログラムを実行している領域に直接接続されます。
独立端末モードは以下の方法で機能させます。
- ユーザーの DTCN または CADP プロファイルのディスプレイ装置を使用可能な端末に設定します。その端末は、Debug Tool を実行する CICS 領域によって見つけることができます。
- アプリケーション・プログラムを始動します。
リモート・デバッガーを使用してプログラムをデバッグする場合は、リモート・デバッグ・モードを選択します。CADP プロファイルまたは DTCN プロファイルを更新する際に必要となるため、使用するリモート・デバッガーの TCP/IP アドレスをメモしておいてください。
単一端末モードを使用しない場合に、プログラムが WAIT オプションなしで画面を端末へ送信する場合、CICS 端末管理では、そのプログラムが EXEC CICS SEND ステートメントまたは EXEC CICS RECEIVE ステートメントを実行するまでその画面が保持されます。
分散プログラム・リンク (DPL) を使用するプログラムをデバッグする場合、以下のデバッグ・モードのいずれかを選択できます。
- DB2® プログラムの場合
- 専用端末を使用するフルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- DB2 ストアード・プロシージャーの場合
- 専用端末を使用するフルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- IMS TM プログラムの場合
- 専用端末を使用するフルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- IMS バッチ・プログラムの場合
- IMS バッチ・プログラムと対話する場合は、専用端末を使用するフルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用して IMS バッチ・プログラムと対話する場合は、リモート・デバッグ・モードを選択します。IMS バッチ・プログラムと対話しない場合は、バッチ・モードを選択し、コマンド・ファイルによりコマンドを指定し、ログ・ファイル内の結果を検討します。
- IMS BTS プログラムの場合
- ユーザーのプログラムおよびデバッグ・セッションを単一画面で実行する場合は、フルスクリーン・モードを選択します。BTS データをユーザーの TSO 端末に表示し、別の端末にデバッグ・セッションを表示したい場合は、専用端末を使用するフルスクリーン・モードを選択します。BTS データをユーザーの TSO 端末に表示し、サポートされているリモート・デバッガーにデバッグ・セッションを表示したい場合は、リモート・デバッグ・モードを選択します。
- ALCS プログラムの場合
- リモート・デバッグ・モードを選択する必要があります。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連資料
- IMS/VS バッチ端末シミュレーター プログラムおよび操作解説書
ブラウズ・モードでのデバッグ
何らかの実稼働環境でデバッグを行う場合は、ストレージの内容と実行フローを変更するユーザーの能力を制限することが必要になる可能性があります。
ブラウズ・モードでデバッグを行うと、ストレージの内容と実行フローを変更するためのユーザーの能力を制限しながら、プログラムをデバッグすることができます。
Debug Tool は現行ユーザーの RACF® 権限または EQAOPTS ロード・モジュールへの入力、あるいはこの両方を使用して、ブラウズ・モードで稼働するかどうかを判断します。
ブラウズ・モードでデバッグする場合、以下のアクションは実行できません。
- メモリーまたはレジスターの内容を変更する
- プログラム実行の順序を変更する
QUERY BROWSE MODE コマンドを使用すると、ブラウズ・モードがアクティブかどうかを判別できます。
C および C++ プログラムは、ブラウズ・モードでは実行できません。C または C++ プログラムをブラウズ・モードで実行しようとすると、Debug Tool はシステム・ログにメッセージを書き込み、U1991 異常終了で終了します。
ブラウズ・モードのインストールと制御の方法については、「Debug Tool カスタマイズ・ガイド」を参照してください。
フルスクリーン・モード、行モード、およびバッチ・モードでのブラウズ・モードのデバッグ
フルスクリーン・モード、行モード、またはバッチ・モードでデバッグを行う場合、ブラウズ・モードがアクティブであり、以下のいずれかのコマンドを入力した場合、Debug Tool は、そのコマンドがブラウズ・モードでは許可されないことを示すメッセージを表示します。
- ALLOCATE コマンド
- 割り当てコマンド (アセンブラーおよび逆アセンブリー)
- 割り当てコマンド (非言語環境プログラム COBOL)
- 割り当てコマンド (PL/I)
- CALL %CECI コマンド
- CALL entry_name (COBOL)
- CALL %FM コマンド
- CALL %HOGAN コマンド
- CLEAR LOG コマンド
- COMPUTE コマンド
- FREE コマンド
- GO BYPASS コマンド
- GOTO コマンド
- GOTO LABEL コマンド
- INPUT コマンド
- JUMPTO コマンド
- JUMPTO LABEL コマンド
- MEMORY コマンド (Debug Tool はメモリー・ウィンドウを表示しますが、何も変更できません)
- MOVE コマンド
- QUIT コマンド
- QUIT expression コマンド
- QQUIT コマンド
- SET INTERCEPT コマンド
- SET コマンド (COBOL)
- STORAGE コマンド
- SYSTEM コマンド
- TRIGGER コマンド
- TSO コマンド
ストレージ、レジスター、または同様のデータを変更する可能性のある expression または condition を含むコマンドを入力した場合、またはそのコマンドによっていずれかのユーザー作成機能が呼び出されるか実行の順序が変更される場合、Debug Tool は、そのコマンドがブラウズ・モードでは許可されないことを示すメッセージを表示します。
- do/while
- DO コマンド (PL/I)
- EVALUATE コマンド (COBOL)
- expression コマンド (C および C++)
- for コマンド (C および C++)
- %IF コマンド
- IF コマンド
- LIST expression コマンド
- switch コマンド
- while コマンド
リモート・デバッグ・モードでのブラウズ・モードのデバッグ
リモート・デバッガーを使用していて、ブラウズ・モードがアクティブな場合、リモート・デバッガーによって以下のアクションの実行は許可されません。
- 位置への JumpTo - ソース・ウィンドウの RMB アクション
- 値の変更 - 式、変数、およびレジスターの RMB アクション
- メモリー・ウィンドウでメモリーの上書き
さらに、リモート・デバッガーにより以下の制限が適用されます。
- 値の変更 - リモート・デバッガーはレジスターの RMB アクションを許可せず、エラー・メッセージを表示します。
- 「Terminate (終了)」ボタン - プログラムは異常終了で終了します (代わりに、「Disconnect (切断)」をクリックして、デバッガーを使用せずにプログラムの実行を続けます)。
また、リモート・デバッガーは以下のデバッグ・コンソール・コマンドの入力を許可しません。
- JUMPTO (および「Add a Breakpoint (ブレークポイントの追加)」ウィンドウのアクション・フィールドの JUMPTO)
- SET INTERCEPT
- QUIT
リモート・デバッグ・モードでデバッグを行っているときに異常終了が発生し、ブラウズ・モードがアクティブな場合、リモート・デバッガーによって継続オプションは提供されません。
異常終了の発生後にプログラム実行は続行できません。
ブラウズ・モードの制御
RACF アクセス権限を変更するか EQAOPTS をカスタマイズすることによって、またはその両方を行うか両方とも行わないことによって、ブラウズ・モードを制御 (アクティブ化または非アクティブ化) することができます。RACF アクセス権限を使用してブラウズ・モードを制御するには、ユーザーの RACF アクセス権限を以下の RACF 機能に変更します。
- CICS の場合:
EQADTOOL.BROWSE.CICS
- CICS 以外の場合: EQADTOOL.BROWSE.MVS
EQAOPTS を使用してブラウズ・モードを制御するには、EQAXOPT BROWSE オプションを ON または OFF に設定します。
次の表は、これらの制御方式 (RACF アクセス権限を使用する方法、または EQAOPTS をカスタマイズする方法) をどのように組み合わせることにより、ブラウズ・モードをアクティブ化または非アクティブ化できるかを示しています。
これらの制御の使用方法については、「Debug Tool カスタマイズ・ガイド」を参照してください。
表 10. ブラウズ・モードをアクティブ化または非アクティブ化する RACF アクセス権限と EQAXOPT BROWSE 設定のさまざまな組み合わせ
| RACF アクセス権限の状況 |
EQAXOPT BROWSE オプションの設定 |
| 設定しない (RACF の状況を使用) |
ON |
OFF |
| 機能 (アクセス) が定義されていない |
通常モード (ブラウズ・モードは非アクティブ) |
ブラウズ・モードがアクティブです |
通常モード |
| ACCESS=NONE |
Debug Tool を使用できません |
Debug Tool を使用できません |
Debug Tool を使用できません |
| ACCESS=READ |
ブラウズ・モードがアクティブです |
ブラウズ・モードがアクティブです |
ブラウズ・モードがアクティブです |
| ACCESS=UPDATE (またはそれ以上) |
通常モード |
ブラウズ・モードがアクティブです |
通常モード |
表 11 は、プログラムのタイプごとに Debug Tool の開始方法が異なることを示しています。このトピックでは、プログラムのタイプごとに、適用可能なそれぞれの方法が機能する環境について説明しています。その後、ユーザーのサイトに最適な方法を選択できます。このトピックを完了したら、使用するプログラムに最適な方法の選択も完了します。
表 11. TEST ランタイム・オプションの指定方法およびこれらの方法をサポートするプログラム
|
EQADBCXT ユーザー出口ルーチンの使用 |
EQADICXT ユーザー出口ルーチンの使用 |
EQADDCXT ユーザー出口ルーチンの使用 |
DFSBXITA ユーザー出口の使用 |
CADP トランザクションの使用 |
DTCN トランザクションの使用 |
DB2 カタログの使用 |
プログラム内部から、CEETEST、
__ctest()、
または PLITEST への呼び出しをコーディングします |
CEEUOPT または CEEROPT の使用 |
TSO 内の JCL または CEEOPTS の割り振りで CEEOPTS DD ステートメントを使用します |
ユーザーのプログラム開始時に EXEC ステートメントのパラメーターを使用します |
ユーザーのプログラム開始時に RUN ステートメントのパラメーターを使用します |
ユーザーのプログラム開始時に CALL ステートメントのパラメーターを使用します |
EQASET トランザクションを介します3 |
EQANMDBG プログラムを介します4 |
| TSO |
|
|
|
|
|
|
|
X |
X |
X |
|
|
X |
|
X4 |
| JES バッチ |
X |
|
|
|
|
|
|
X |
X |
X |
X |
|
|
|
X4 |
| UNIX システム・サービス |
|
|
|
|
|
|
|
X |
X |
X |
|
|
|
|
|
| CICS |
|
|
|
|
X |
X |
|
X |
X1 |
|
|
|
|
|
|
| DB2 |
|
|
|
|
|
|
|
X |
X1 |
X |
|
X |
|
|
|
| DB2 ストアード・プロシージャー (PROGRAM TYPE=MAIN) |
|
|
X |
|
|
|
X2 |
X |
X1,2 |
|
|
|
|
|
|
| DB2 ストアード・プロシージャー (PROGRAM TYPE=SUB) |
|
|
|
|
|
|
X |
X |
|
|
|
|
|
|
|
| IMS TM |
|
X |
|
X |
|
|
|
X |
X |
|
|
|
|
X3 |
|
| IMS バッチ |
X |
|
|
X |
|
|
|
X |
X |
|
|
|
|
|
X4 |
| IMS BTS |
X |
X |
|
X |
|
|
|
X |
X |
|
|
|
|
|
X4 |
|
注:
- CEEROPT を使用して TEST ランタイム・オプションを指定することはできません。
- DB2 カタログ方式は、常に CEEUOPT に優先します。
- この方法は、非言語環境プログラムのアセンブラー・プログラムでのみ使用可能です。
- この方法は、非言語環境プログラムのプログラムでのみ使用可能です。
|
以下のリストでは、各プログラムのタイプの Debug Tool 開始方法について説明します。
このリストを読み終えたら、ユーザーの状態に最も当てはまる方法を選択し、選択した方法を 表 11 のコピーに記録してください。
- TSO プログラムの場合
- 言語環境プログラムで開始するプログラムについて、ランタイム・オプションの指定で最も柔軟な方法として、TSO 内の CEEOPTS
の割り振りを選択します。
ランタイム・オプションの数が少ない場合、または非言語環境プログラムのプログラムに対して EQANMDBG を起動する必要がある場合、CALL ステートメント・オプションのパラメーターを選択します。
CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択する場合は、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- JES バッチ・プログラムの場合
- 言語環境プログラムで開始するプログラムについて、ランタイム・オプションの指定で最も柔軟な方法として、ユーザーの JCL で CEEOPTS
DD ステートメントを選択します。
ランタイム・オプションの数が少ない場合、または非言語環境プログラムのプログラムに対して EQANMDBG を起動する必要がある場合、EXEC ステートメント・オプションのパラメーターを選択します。
CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択する場合は、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- UNIX システム・サービス・プログラムの場合
- TEST ランタイム・オプションは、_CEE_RUNOPTS 環境変数を設定することによって指定します。
CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択する場合は、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- CICS プログラムの場合
- TEST ランタイム・オプションが入っているプロファイルを作成および保管するには、DTCN トランザクションまたは CADP トランザクションのいずれかを選択します。CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択する場合は、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- DB2 プログラムの場合
- ランタイム・オプションの指定で最も柔軟な方法として、JCL で CEEOPTS
DD ステートメントを選択するか、TSO 内の CEEOPTS
の割り振りを選択します。
ランタイム・オプションの数が少ない場合、RUN ステートメント・オプションのパラメーターを選択します。
CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択する場合は、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- PROGRAM TYPE が MAIN の DB2 ストアード・プロシージャーの場合
- 言語環境プログラム EQADDCXT 出口ルーチンの使用を選択します。
ユーザーは、独自のサブオプション・セットを使用してストアード・プロシージャーを実行できます。別のユーザーは、そのユーザー独自のサブオプション・セットを使用してストアード・プロシージャーを実行またはデバッグできます。
したがって、同時に複数のユーザーがそのストアード・プロシージャーを実行またはデバッグできます。
サイトで出口ルーチンが使用不可の場合は、DB2 カタログを選択してください。しかし、ユーザーは、特定の 1 つのサブオプション・セットを指定するよう制限されます。つまり、ストアード・プロシージャーを実行またはデバッグするすべてのユーザーは、同じサブオプション・セットを使用します。
両方のメソッドを選択した場合は、言語環境プログラム出口ルーチンが DB2 カタログに優先します。
- PROGRAM TYPE が SUB の DB2 ストアード・プロシージャーの場合
- DB2 カタログの使用を選択します。
ユーザーは、 1 つのサブオプション・セットを指定するよう制限されます。つまり、ストアード・プロシージャーを実行またはデバッグするすべてのユーザーは、同じサブオプション・セットを使用します。
- IMS TM プログラムの場合
- EQADICXT ユーザー出口ルーチンの使用を選択します。
使用するプログラムが非言語環境プログラムのアセンブラー・プログラムである場合、EQASET
トランザクションを介して選択します。
サイトで EQADICXT ユーザー出口ルーチンが使用不可の場合は、DFSBXITA ユーザー出口ルーチンを介して選択します。
サイトで EQADICXT または DFSBXITA ユーザー出口ルーチンが使用不可の場合は、CEEUOPT または CEEROPT を介して選択します。
前出のオプションがすべてサイトで使用不可の場合は、CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択します。ただし、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- IMS バッチ・プログラムの場合
- EQADBCXT ユーザー出口ルーチンを介して選択します。使用するプログラムが非言語環境プログラムのプログラムである場合、EQANMDBG プログラムを介して選択します。
サイトで EQADBCXT ユーザー出口ルーチンが使用不可の場合は、DFSBXITA ユーザー出口ルーチンを介して選択します。ただし、TRANSACTION ではなく
PROGRAM を指定しなければなりません。
サイトで EQADBCXT または DFSBXITA ユーザー出口ルーチンが使用不可の場合は、CEEUOPT または CEEROPT を介して選択します。
前出のオプションがすべてサイトで使用不可の場合は、CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択します。ただし、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- IMS BTS プログラムの場合
- EQADICXT ユーザー出口ルーチンの使用を選択します。
使用するプログラムが非言語環境プログラムのプログラムである場合、EQANMDBG プログラムを介して選択します。
サイトで EQADICXT ユーザー出口ルーチンが使用不可の場合は、EQADBCXT ユーザー出口ルーチンを介して選択します。
サイトで EQADBCXT ユーザー出口ルーチンが使用不可の場合は、DFSBXITA ユーザー出口ルーチンを介して選択します。
サイトで EQADICXT、EQADBCXT、または DFSBXITA ユーザー出口ルーチンが使用不可の場合は、CEEUOPT または CEEROPT を介して選択します。
前出のオプションがすべてサイトで使用不可の場合は、CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択します。ただし、オプションを変更するたびにプログラムの再コンパイルが必要になります。
Debug Tool の開始に使用する方法を特定した後、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。
旧バージョンの COBOL プログラムのデバッグ方法の選択
OS/VS COBOL コンパイラーでコンパイルされたプログラムは、以下のいずれかを行うことによってデバッグすることができます。
- 非言語環境プログラム COBOL プログラムとしてデバッグする。
- それらのプログラムを 1985 COBOL 標準レベルに変換し、Enterprise COBOL for z/OS and OS/390 コンパイラーまたは COBOL for OS/390 & VM コンパイラーでコンパイルする。 ロード・モジュール・アナライザーを使用してロード・モジュール内の OS/VS COBOL プログラムを判別してから、COBOL と CICS Command Level Conversion Aid (CCCA) を使って各プログラムを変換できます。
OS/VS COBOL プログラムを 1985 COBOL 標準に変換するには、以下のステップを行ってください。
- ご使用のロード・モジュール内の OS/VS COBOL プログラムを識別します。これを行うにはロード・モジュール・アナライザーを使用します。ロード・モジュール・アナライザーの使用方法については、付録H. Debug Tool ロード・モジュール・アナライザーを参照してください。
-
COBOL CICS Command Level Conversion Aid (CCCA) を使用して OS/VS COBOL ソースを変換する。CCCA の使用方法は、「COBOL and CICS Command Level Conversion Aid for OS/390 & MVS & VM User's Guide」を参照してください。
-
Enterprise COBOL for z/OS and OS/390 あるいは COBOL for OS/390 & VM のどちらかを使用して新しいソースをコンパイルする。
Debug Tool Utilities の「Convert and Compile」オプションを使用して、2 と 3 を結合できます。
- Debug Tool を使用してオブジェクト・モジュールをデバッグする。
プログラムを変換、およびデバッグした後、以下のオプションのいずれかを行うことができます。
- OS/VS COBOL コンパイラーを続けて使用する。プログラムをデバッグするたびに、このセクションに記載されたステップを行う必要があります。
- このセクションに記載の各ステップで作成した新しいソースを使用してください。
お客様はこのソースをコンパイルし、このセクションに記載されたステップを繰り返さずにこのソースをデバッグできます。
CCCA は、CMPR2 コンパイラー・オプションであらかじめコンパイルされた VS COBOL II、COBOL for MVS & VM、および COBOL for OS/390 & VM のプログラムを含め、どのレベルの COBOL ソース・プログラムでも入力として使用することができます。
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。
これにより、EQAXOPT MDBG オプションのすべての設定 (デフォルト設定を含む) がオーバーライドされます。
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。
これにより、EQAXOPT MDBG オプションのすべての設定 (デフォルト設定を含む) がオーバーライドされます。
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。
これにより、EQAXOPT MDBG オプションのすべての設定 (デフォルト設定を含む) がオーバーライドされます。
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。
これにより、EQAXOPT MDBG オプションのすべての設定 (デフォルト設定を含む) がオーバーライドされます。
|
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)