Rational Developer for System z バージョン 7.6

デバッグ・セッションの計画

デバッグを始める前に、計画を立てておくと、以下の選択を行うときに役立ちます。

計画を立てる際には、以下の作業を行います。

  1. 表 5 を使用して、ユーザーのプログラムに使用するコンパイラー・オプションおよびサブオプションを記録します。この表には、一連の一般コンパイラーに対して、最小プログラム・サイズでほとんどのデバッグ機能を提供できるコンパイラー・オプションが記載されています。以下の情報について、デバッグするためのコンパイラー・オプションの選択 を参照してください。
  2. 表 3 を使用して、使用するデバッグ・モードを記録します。デバッグ・モードを機能させるための前提条件およびユーザーが行う必要のある作業については、デバッグ・モードの選択を参照してください。
  3. 表 10 を使用して、TEST ランタイム・オプションを指定するために使用する方法を記録します。Debug Tool の開始方法の選択を参照すると、使用するプログラムに最も適した方法を決定するのに役立ちます。
  4. デバッグする COBOL プログラムが旧バージョン (「COBOL and CICS Command Level Conversion Aid for OS/390、MVS、VM: User's Guide」にリストされている) である場合、以下のどちらかを選択する必要があります。 詳しくは、旧バージョンの 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 コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. IMS™ を使用する COBOL プログラムの場合は、IMS RESLIB ライブラリーから IMS インターフェース・モジュール DFSLI000 を組み込んでください。
  3. シナリオ A、B、および E の場合は、以下のステップを実行します。
    1. 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
    2. 使用するシステムに動的デバッグ機能がインストールされていることを確認します。
    3. Debug Tool を始動した後、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブにしていないことを確認します。
    4. 分離デバッグ・ファイルが一時ファイルでなく、デバッグ・セッションで使用可能であることを確認します。リストを保存する必要はありません。
  4. 以下のいずれかの作業を実行する必要があるかどうかを確認します。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

以下の表は、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
  • プログラム変数を名前で参照できません。
  • LISTDESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
  • 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 コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. シナリオ A、B、C、E、および F の場合は、以下のステップを実行します。
    1. 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
    2. 使用するシステムに動的デバッグ機能がインストールされていることを確認します。
    3. Debug Tool を始動した後、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブにしていないことを確認します。
    4. 分離デバッグ・ファイルが一時ファイルでなく、デバッグ・セッションで使用可能であることを確認します。
  3. 以下のいずれかの作業を実行する必要があるかどうかを確認します。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

表 7. PL/I NOTEST コンパイラー・オプションおよび TEST コンパイラー・サブオプションが Debug Tool に及ぼす影響の説明
コンパイラー・オプションまたはサブオプションの名前 影響の説明
NOTEST

NOTEST コンパイラー・オプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。以下のリストは、それらの変更の説明です。

  • ストレージおよびレジスターをリストできます。
  • プログラムに PLITEST または CEETEST への呼び出しを組み込むことにより、プログラムの実行を一時的に中断し、Debug Tool コマンドを発行できます。
  • プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
  • プログラム変数を検証または使用することはできません。
  • ステートメント・レベルのフックは挿入されないため、ステートメントのブレークポイントの設定や、GOTOQUERY 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 を使用すると、ステートメントおよびラベルへの分岐ができます。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

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 コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. 以下のシナリオの場合、以下のリソースがあることを確認してください。
  3. 以下のいずれかの作業を実行する必要があるかどうかを確認します。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

C プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択

ここでは、使用可能なデバッグ・シナリオと、正しい TEST コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。

C コンパイラーは、TEST コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。

以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. シナリオ B の場合は、以下のステップを実行します。
    1. z/OS バージョン 1.6 またはバージョン 1.7 で実行している場合は、言語環境プログラムの APAR PK12833 用の PTF がインストールされていることを確認します。
    2. 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
    3. 使用するシステムに動的デバッグ機能がインストールされていることを確認します。
    4. Debug Tool を始動した後、SET DYNDEBUG OFF コマンドを入力して、動的デバッグ機能を非アクティブにしていないことを確認します。
  3. 以下のいずれかの作業を実行する必要があるかどうかを確認します。
表 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++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。

  • プログラム変数を名前で参照できません。
  • LISTDESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
  • CALLGOTO などのコマンドを使用して別のラベル (パラグラフまたはセクション名) に分岐することはできません。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

#pragma ステートメントによる C プログラムのコンパイル

TEST/NOTEST コンパイラー・オプションは、プログラムをコンパイルするときに、または直接プログラム内で、#pragma を使用して指定することができます。

この #pragma は、プログラム内でどの実行可能コード よりも前になければなりません。

次の例では、シンボル・テーブル情報、ネストされたブロックのシンボル情報、および行番号でのフックが生成されます。

#pragma options (test(SYM,BLOCK,LINE))

これは TEST(SYM,BLOCK,LINE,PATH) と同等です。

また、#pragma を使用して ランタイム・オプションを指定することもできます。

関数およびネストされたブロックでのフックの配置規則

関数およびネストされたブロックに出入りする際のフックの配置には、次の規則が適用されます。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

ステートメントおよびパス点でのフックの配置規則

ステートメントおよびパス点用のフックの配置には、次の規則が適用されます。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

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 コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. 以下のシナリオの場合、以下のリソースがあることを確認してください。
  3. 以下のいずれかの作業を実行する必要があるかどうかを確認します。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

C++ プログラム用の TEST または NOTEST コンパイラー・オプションの選択

ここでは、使用可能なデバッグ・シナリオと、正しい TEST コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。

C++ コンパイラーは、TEST コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。

以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. 以下のいずれかの作業を実行する必要があるかどうかを確認します。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

表 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 を越えてはいけない。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

関数およびネストされたブロックでのフックの配置規則

関数およびネストされたブロックのフックの配置には、次の規則が適用されます。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

ステートメントおよびパス点でのフックの配置規則

ステートメントおよびパス点用のフックの配置には、次の規則が適用されます。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

フックの機能およびフックが必要な理由の説明

フックを使用すると、ブレークポイントを設定できます。フックとは、コンパイル時にコンパイラーによってプログラムに挿入される 命令のことです。フックは、ブロックの入り口と出口、ステートメント境界、およびステートメント境界間でプログラムの流れが変わる可能性のあるプログラム内の場所 (パス点と呼ばれる) に置かれます。TEST コンパイラー・オプションを使用してプログラムをコンパイルし、NONE (または NOHOOK) 以外のサブオプションを指定すると、コンパイラーがプログラムにフックを挿入します。

動的デバッグ機能を使用して、フックなしで最大のパフォーマンスを得る方法

以下の状態では、プログラムをフックなしでコンパイルまたは作成することができます。 その後、ブレークポイントを設定するか STEP コマンドを入力するときはいつでも動的デバッグ機能を使用して、実行時にフックを挿入できます。

動的デバッグ機能を使用することによって、次のいずれかのコンパイラーでコンパイルされた プログラムのデバッグ時の Debug Tool のパフォーマンスを向上させることもできます。

次のいずれかのコンパイラーを使用してコンパイルし、コンパイラーにフックを挿入させる場合は、動的デバッグ機能を使用することによって、デバッグ時のプログラムのパフォーマンスを向上させることができます。

Debug Tool を始動すると、動的デバッグ機能がアクティブになります。Debug Tool は、コンパイラーでなく、動的デバッグ機能によって挿入されたフックを使用します。したがって、一部のパス・ブレークポイントは、使用不可になる場合があります。それらのブレークポイントを使用する必要がある場合は、SET DYNDEBUG OFF コマンドを入力して、動的デバッグ機能を非アクティブにします。その場合、Debug Tool は、動的デバッグ機能でなく、コンパイラーによって挿入されたフックを使用します。

シンボル・テーブルの機能、および、シンボル・テーブルを他の場所に保存するとアプリケーションを小さくできる理由の説明

シンボル・テーブルには、変数、その属性、およびストレージ内での位置についての説明が含まれます。Debug Tool は、変数を参照するときにこれらの記述を使用します。シンボル・テーブルは、プログラムのオブジェクト・ファイルまたは個々のデバッグ・ファイルに保存できます。次のいずれかのコンパイラーまたはアセンブラーを使用してプログラムをコンパイルまたはアセンブルする場合は、シンボル・テーブルを個別のデバッグ・ファイルに保存できます。

シンボル・テーブルを個々のデバッグ・ファイルに保存することにより、プログラムのロード・モジュールのサイズを小さくすることができます。

C および C++ プログラムの場合、DEBUG コンパイラー・オプションの FORMAT(DWARF) サブオプションを指定することで、デバッグ・テーブルを分離デバッグ・ファイル (.dbg ファイル) に保存することができます。Debug Tool は、z/OS C/C++ バージョン 1.6 以降で提供される、DEBUG コンパイラー・オプションをサポートします。

デバッグ・モードの選択

以下のリストを使用して、ユーザーのプログラムで使用するデバッグ・モードを決定してください。

TSO プログラムの場合
フルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
JES バッチ・プログラムの場合
バッチ・プログラムと対話する場合は、フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用してバッチ・プログラムと対話する場合は、リモート・デバッグ・モードを選択します。バッチ・プログラムと対話しない場合は、バッチ・モードを使用し、コマンド・ファイルによりコマンドを指定し、ログ・ファイル内の結果を検討します。
UNIX® システム・サービス・プログラムの場合
フルスクリーン・モード (VTAM 端末) を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
CICS® プログラムの場合
3270 装置で Debug Tool と対話する場合は、フルスクリーン・モードを選択し、以下のいずれかの端末モードを選択します。

リモート・デバッガーを使用してプログラムをデバッグする場合は、リモート・デバッグ・モードを選択します。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 端末に表示し、サポートされているリモート・デバッガーにデバッグ・セッションを表示したい場合は、リモート・デバッグ・モードを選択します。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

Debug Tool の開始方法の選択

表 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
注:
  1. CEEROPT を使用して TEST ランタイム・オプションを指定することはできません。
  2. DB2 カタログ方式は、常に CEEUOPT に優先します。
  3. この方式は非言語環境プログラム アセンブラー・プログラム用のみです。
  4. この方式は非言語環境プログラム プログラム用のみです。

以下のリストで、プログラムのタイプごとに 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 コンパイラーによってコンパイルしたプログラムは、以下のいずれかを行うことにより、デバッグすることができます。

OS/VS COBOL プログラムを 1985 COBOL 標準に変換するには、以下のステップを行ってください。

  1. ご使用のロード・モジュール内の OS/VS COBOL プログラムを識別します。これを行うにはロード・モジュール・アナライザーを使用します。ロード・モジュール・アナライザーの使用方法については、付録G. Debug Tool ロード・モジュール・アナライザーを参照してください。
  2. 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」を参照してください。
  3. Enterprise COBOL for z/OS and OS/390 あるいは COBOL for OS/390 & VM のどちらかを使用して新しいソースをコンパイルする。

    Debug Tool Utilities の「Convert and Compile」オプションを使用して、23 を結合できます。

  4. Debug Tool を使用してオブジェクト・モジュールをデバッグする。

プログラムを変換、およびデバッグした後、以下のオプションのいずれかを行うことができます。

CCCA は、CMPR2 コンパイラー・オプションであらかじめコンパイルされた VS COBOL II、COBOL for MVS & VM、および COBOL for OS/390 & VM のプログラムを含め、どのレベルの COBOL ソース・プログラムでも入力として使用することができます。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)