デバッグ・セッションの計画
デバッグを始める前に、計画を立てておくと、以下の選択を行うときに役立ちます。
- プログラムのコンパイルまたはアセンブルの際に使用する必要のある、コンパイラーまたはアセンブラーのオプションとサブオプション。
- Debug Tool と対話するときに使用するデバッグ・モード (バッチ・モード、フルスクリーン・モード、フルスクリーン・モード (VTAM 端末)、またはリモート・デバッグ・モード)。
- Debug Tool を始動するために使用できる方法。
- 旧バージョンの COBOL プログラム (「COBOL and CICS Command Level Conversion Aid for OS/390、MVS、VM: User's Guide」にリストされている) を持っている場合は、それらのプログラムのデバッグ方法。
計画を立てる際には、以下の作業を行います。
- 表 5 を使用して、ユーザーのプログラムに使用するコンパイラー・オプションおよびサブオプションを記録します。この表には、一連の一般コンパイラーに対して、最小プログラム・サイズでほとんどのデバッグ機能を提供できるコンパイラー・オプションが記載されています。以下の情報について、デバッグするためのコンパイラー・オプションの選択 を参照してください。
- コンパイラー・オプションおよびサブオプションに必要な前提条件。
- コンパイラー・オプションおよびサブオプションをサイトで機能させるために必要になることがある追加作業。
- コンパイラー・オプションおよびサブオプションがプログラム・サイズや Debug Tool の機能にどのように影響する可能性があるかについての情報。
-
表 3 を使用して、使用するデバッグ・モードを記録します。デバッグ・モードを機能させるための前提条件およびユーザーが行う必要のある作業については、デバッグ・モードの選択を参照してください。
- 表 10 を使用して、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 バージョン 9.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 サブオプションを使用した場合は、一部の最適化が実現されない可能性があります。
- シナリオ 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)
これらのタイプのプログラムでは、変数を変更することができますが、結果が予測不能になる場合があります。
- シナリオ 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 適用
- シナリオ 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 および 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 コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- オブジェクト・ファイルまたは分離デバッグ・ファイルへのデバッグ情報の配置。
以下の説明は、プログラムのデバッグに必要な機能を提供する 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)) コンパイラー・オプションを指定します。
- シナリオ 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)) コンパイラー・オプションを指定します。
- シナリオ C: Enterprise PL/I for z/OS バージョン 3.5 または 3.6 を使用しており、ほとんどの Debug Tool 機能と小さなプログラム・サイズを取得したい場合は、TEST(ALL,NOHOOK,SYM,SEPARATE) を使用します。動的デバッグ機能をインストールしておく必要があり、場合によっては、「許可されたデバッグ」機能をインストールする必要があります。
- シナリオ D: Enterprise PL/I for z/OS
バージョン 3.4 を使用しており、コンパイル時に挿入されるフックがないプログラムをデバッグする場合は、TEST(ALL,NOHOOK,SYM) を使用します。動的デバッグ機能をインストールしておく必要があり、場合によっては、「許可されたデバッグ」機能をインストールする必要があります。
- シナリオ E: Enterprise PL/I for z/OS バージョン 3.3 またはそれ以前のバージョンを使用している場合、すべての Debug Tool 機能を使用したいときは TEST(ALL,SYM) を使用します。
- シナリオ 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 コンパイラー・オプションのどちらを選択する
C/C++ コンパイラー・オプション DEBUG(FORMAT(DWARF)) は、z/OS C/C++ バージョン 1.5 で初めて導入されました。 Debug Tool は、z/OS C/C++ バージョン 1.6 以降で、DEBUG コンパイラー・オプションをサポートします。
DEBUG(FORMAT(DWARF)) コンパイラー・オプションを指定してプログラムをコンパイルし、デバッグ情報を分離デバッグ・ファイル (.dbg ファイル) に入れます。これにより、ご使用のロード・モジュールのサイズが小さくなります。デバッグ・セッションでは、Debug Tool は .dbg ファイルとソース・ファイルから情報を入手します。
TEST および DEBUG コンパイラー・オプションを指定してコンパイルされたコンパイル単位の組み合わせであるプログラムをデバッグすることができます。
TEST および DEBUG コンパイラー・オプションの詳細は、「z/OS XL C/C++ ユーザーズ・ガイド」を参照してください。
C プログラム用の DEBUG コンパイラー・サブオプションの選択
ここでは、使用可能なデバッグ・シナリオと、正しい DEBUG コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。
C コンパイラーには、以下のアクションを制御するために、DEBUG コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- オブジェクト・ファイルまたは分離デバッグ・ファイルへのデバッグ情報の配置。
以下の説明は、プログラムのデバッグに必要な機能を提供する DEBUG コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: ほとんどの Debug Tool 機能を、より小さなプログラム・サイズ、および、よりよいパフォーマンスで取得するには、以下の組み合わせを使用します。
DEBUG(FORMAT(DWARF),HOOK(LINE,NOBLOCK,PATH),SYMBOL,FILE(file_location))
- シナリオ B: すべての Debug Tool 機能を取得できればプログラム・サイズが大きくなってもかまわず、また、デバッグ情報を分離ファイルに入れる必要がない場合は、次の組み合わせを使用します。
DEBUG(FORMAT(ISD),HOOK(LINE,NOBLOCK,PATH),SYMBOL)
- シナリオ C: NODEBUG コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
- 以下のシナリオの場合、以下のリソースがあることを確認してください。
- シナリオ A の場合、.dbg ファイルが一時ファイルではなく、デバッグ・セッションで使用可能であることを確認します。
- シナリオ 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 コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: すべての Debug Tool 機能を取得できれば、(DEBUG(FORMAT(DWARF)) を使用した場合に比べて) プログラム・サイズが大きくなってもかまわない場合は、TEST(ALL,HOOK,SYMBOL) を使用します。
- シナリオ B: NOTEST コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
- シナリオ 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 コンパイラー・オプションのどちらを選択する
C/C++ コンパイラー・オプション DEBUG(FORMAT(DWARF)) は、z/OS C/C++ バージョン 1.5 で初めて導入されました。 Debug Tool は、z/OS C/C++ バージョン 1.6 以降で、DEBUG コンパイラー・オプションをサポートします。
DEBUG(FORMAT(DWARF)) コンパイラー・オプションを指定してプログラムをコンパイルし、デバッグ情報を分離デバッグ・ファイル (.dbg ファイル) に入れます。これにより、ご使用のロード・モジュールのサイズが小さくなります。デバッグ・セッションでは、Debug Tool は .dbg ファイルとソース・ファイルから情報を入手します。
TEST および DEBUG コンパイラー・オプションを指定してコンパイルされたコンパイル単位の組み合わせであるプログラムをデバッグすることができます。
TEST および DEBUG コンパイラー・オプションの詳細は、「z/OS XL C/C++ ユーザーズ・ガイド」を参照してください。
C++ プログラム用の DEBUG コンパイラー・サブオプションの選択
ここでは、使用可能なデバッグ・シナリオと、正しい DEBUG コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。
C++ コンパイラーには、以下のアクションを制御するために、DEBUG コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- オブジェクト・ファイルまたは分離デバッグ・ファイルへのデバッグ情報の配置。
以下の説明は、プログラムのデバッグに必要な機能を提供する DEBUG コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: ほとんどの Debug Tool 機能と小さなプログラム・サイズを取得するには、以下の組み合わせを使用します。
DEBUG(FORMAT(DWARF),HOOK(LINE,NOBLOCK,PATH),SYMBOL,FILE(file_location))
- シナリオ B: すべての Debug Tool 機能を取得できればプログラム・サイズが大きくなってもかまわず、また、デバッグ情報を分離ファイルに入れる必要がない場合は、次の組み合わせを使用します。
DEBUG(FORMAT(ISD),HOOK(LINE,NOBLOCK,PATH),SYMBOL)
- シナリオ C: NODEBUG コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
- 以下のシナリオの場合、以下のリソースがあることを確認してください。
- シナリオ A の場合、.dbg ファイルが一時ファイルではなく、デバッグ・セッションで使用可能であることを確認します。
- シナリオ 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 コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
-
使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: すべての Debug Tool 機能を取得できれば、(DEBUG(FORMAT(DWARF)) を使用した場合に比べて) プログラム・サイズが大きくなってもかまわない場合は、TEST を使用します。
- シナリオ B: NOTEST コンパイラー・オプションを指定してコンパイルすると、一部の Debug Tool 機能を取得できます。その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。
- 以下のいずれかの作業を実行する必要があるかどうかを確認します。
コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。
表 9. C++ の NOTEST および TEST コンパイラー・オプションが Debug Tool に及ぼす影響の説明
| コンパイラー・オプションまたはサブオプションの名前 |
影響の説明 |
| NOTEST |
以下のリストは、NOTEST コンパイラーが、「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていない Debug Tool の動作に及ぼす影響を説明したものです。
- プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
- プログラム変数を検証または使用することはできません。
- ストレージおよびレジスターをリストできます。
- Debug Tool の GOTO コマンドは使用できません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。 |
| TEST |
以下のリストは、TEST コンパイラーが、「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていない Debug Tool の動作に及ぼす影響を説明したものです。
- 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 バッチ・プログラムの場合
- バッチ・プログラムと対話する場合は、フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用してバッチ・プログラムと対話する場合は、リモート・デバッグ・モードを選択します。バッチ・プログラムと対話しない場合は、バッチ・モードを使用し、コマンド・ファイルによりコマンドを指定し、ログ・ファイル内の結果を検討します。
- UNIX® システム・サービス・プログラムの場合
- フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- 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 ステートメントを実行するまで画面を保持します。
- DB2® プログラムの場合
- フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- DB2 ストアード・プロシージャーの場合
- フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- IMS TM プログラムの場合
- フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
- IMS バッチ・プログラムの場合
- IMS バッチ・プログラムと対話する場合は、フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用して IMS バッチ・プログラムと対話する場合は、リモート・デバッグ・モードを選択します。IMS バッチ・プログラムと対話しない場合は、バッチ・モードを選択し、コマンド・ファイルによりコマンドを指定し、ログ・ファイル内の結果を検討します。
- IMS BTS プログラムの場合
- ユーザーのプログラムおよびデバッグ・セッションを単一画面で実行する場合は、フルスクリーン・モードを選択します。BTS データをユーザーの TSO 端末に表示し、別の端末にデバッグ・セッションを表示したい場合は、フルスクリーン・モード (VTAM 端末) を選択します。BTS データをユーザーの TSO 端末に表示し、サポートされているリモート・デバッガーにデバッグ・セッションを表示したい場合は、リモート・デバッグ・モードを選択します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
- 関連資料
- IMS/VS バッチ端末シミュレーター プログラムおよび操作解説書
表 10 は、プログラムのタイプごとに Debug Tool の開始方法が異なることを示しています。このトピックでは、プログラムのタイプごとに、適用可能なそれぞれの方法が機能する環境について説明しています。その後、ユーザーのサイトに最適な方法を選択できます。このトピックを完了したら、使用するプログラムに最適な方法の選択も完了します。
表 10. 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 の開始方法について説明します。このリストを読み終えたら、ユーザーの状態に最も当てはまる方法を選択し、選択した方法を 表 10 のコピーに記録してください。
- TSO プログラムの場合
- 言語環境プログラム で開始するプログラムについて、ランタイム・オプションの指定で最も柔軟な方法として、TSO 内の CEEOPTS
の割り振りを選択します。
ランタイム・オプションの数が少ない場合、または非言語環境プログラムのプログラムに対して EQANMDBG を起動する必要がある場合、CALL ステートメント・オプションのパラメーターを選択します。
CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択する場合は、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- JES バッチ・プログラムの場合
- 言語環境プログラム で開始するプログラムについて、ランタイム・オプションの指定で最も柔軟な方法として、ユーザーの JCL で CEEOPTS
DD ステートメントを選択します。
ランタイム・オプションの数が少ない場合、または非言語環境プログラムのプログラムに対して EQANMDBG を起動する必要がある場合、EXEC ステートメント・オプションのパラメーターを選択します。
CEETEST、__ctest()、または PLITEST への呼び出しのコーディングを選択する場合は、オプションを変更するたびにプログラムの再コンパイルが必要になります。
- UNIX システム・サービス・プログラムの場合
- _CEE_RUNOPTS 環境変数を設定することにより、TEST ランタイム・オプションを指定します。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 プログラムを識別します。これを行うにはロード・モジュール・アナライザーを使用します。ロード・モジュール・アナライザーの使用方法については、付録G. 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 ソース・プログラムでも入力として使用することができます。
|
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)