Debug Tool でプログラムをデバッグするためのプロセスの更新

デバッグ・セッションの計画のタスクを完了したら、収集した情報を使用して以下のプロセスを更新できます。

これらのプロセスの更新方法について詳しくは、以下のトピックを参照してください。

コンパイル、アセンブリー、およびリンク・プロセスの更新

ここでは、デバッグ・セッションの計画で選択した内容を実装するために、コンパイル、アセンブリー、およびリンクのプロセスに加えなければならない変更点について説明します。JCL の管理について、およびご使用のサイトのコンパイルまたはアセンブリーのプロセスについて十分理解している場合は、必要な特定の変更内容の説明についてDebug Tool Utilities を使用しないプログラムのコンパイルを参照してください。ご使用のサイトがこれらのプロセスの管理に Debug Tool Utilities を使用している場合、「プログラムの準備 (Program Preparation)」オプションを使用してそのプロセスを更新する方法について、Debug Tool Utilities を使用したプログラムのコンパイルを参照してください。

Debug Tool Utilities を使用しないプログラムのコンパイル

JCL を作成または変更して、プログラムをコンパイルまたはアセンブルするのに必要なすべてのステートメントが含まれるようにし、すべてのライブラリーを適切にリンクします。以下のリストは、行う必要がある変更を説明したものです。

表 12. 特定のコンパイラー・オプションまたはサブオプションを使用してコンパイルするときに保存する必要のあるファイル
プログラミング言語 コンパイラー・サブオプションまたはアセンブラー・オプション 保存する必要があるファイル
COBOL
SEPARATE 分離デバッグ・ファイル
それ以外 リスト・ファイル
NOTEST 疑似アセンブラー・コードを含むリスト作成ファイル
非言語環境プログラム COBOL

OS/VS COBOL プログラムのコンパイル

VS COBOL II プログラムのコンパイル

EQALANGX
それ以外 疑似アセンブラー・コードが入ったリスト・ファイル
PL/I
SEPARATE 分離デバッグ・ファイル
それ以外 (Enterprise PL/I の前) リスト・ファイル
それ以外 (Enterprise PL/I) コンパイラーに対する入力として使用したソース・ファイル
NOTEST 疑似アセンブラー・コードを含むリスト作成ファイル
C/C++
DEBUG(DWARF) .dbg ファイルおよびソース・ファイル

ソース・ファイルを格納する .mdbg ファイルを使用している場合は、その .mdbg ファイルを保存します。

TEST コンパイラーに対する入力として使用したソース・ファイル
NOTEST 疑似アセンブラー・コードを含むリスト作成ファイル
アセンブラー
ADATA EQALANGX
デバッグ情報は保存されません 疑似アセンブラー・コードを含むリスト作成ファイル

この作業の完了後は、ライブラリーおよびプロモーション・プロセスの更新を参照してください。

Debug Tool Utilities を使用したプログラムのコンパイル

Debug Tool Utilities には、プログラムのコンパイルや、Debug Tool の開始に役立ついくつかのユーティリティーが備わっています。このトピックで説明されているステップは、コンパイラーおよびアセンブラーの以下のカテゴリーに当てはまります。

Debug Tool Utilities を使用してプログラムを準備し、Debug Tool を始動する場合は、付録D. 例: Debug Tool Utilities を使用したプログラムの準備とセットアップ・ファイルの変更 を参照してください。ここには、Debug Tool Utilities を使用してサンプルのプログラムを準備し、Debug Tool を始動する方法が説明されています。サンプルを参照し、Debug Tool Utilities の使用方法を理解した後、以下のステップを実行します。

  1. Debug Tool Utilities を始動します。
  2. 「Program Preparation」を選択するために 1 と入力し、Enter を押します。
  3. 使用するコンパイラーに対応する番号を入力し、Enter を押します。
  4. コンパイルするプログラムに関する情報を入力し、CICS® と DB2/SQL のフィールドに適切なオプションを選択します。

    プログラム・ソースが順次データ・セットで、DB2 プリコンパイラーを選択した場合は、 パネル「EQAPPC1B」、「EQAPPC2B」、「EQAPPC3B」、「EQAPPC4B」、または「EQAPPC5B」の DBRMLIB データ・セット・フィールドが、メンバー名が指定された区分データ・セットであることを確認してください。例えば、DEBUG.TEST.DBRMLIB(PROG1) など。

    ¥ を入力してオプションおよびデータ・セット名パターンを編集 (Enter ¥ to edit options and data set name patterns)」フィールドに円記号 ("¥") を入力して、Enter を押します。

  5. 表 5 で収集した情報を使用し、フィールドに適切な値を入力します。必要なすべての変更を加えた後、PF3 を押してこの情報を保管し、前のパネルに戻ります。
  6. 行った選択を確認します。Enter を押します。
  7. 選択を確認してから、Enter を押します。
  8. コンパイルの実行後、パネルが表示されます。コンパイルでエラーがあった場合は、メッセージを検討し、必要な変更を行います。ステップ 1 に戻り、コンパイルを繰り返してください。
  9. 「Program Preparation」パネルに戻るまで、PF3 を押します。
  10. 「Program Preparation」パネルで、"L" と入力して Enter を押します。
  11. 「Link Edit」パネルで、リンク・エディットをフォアグラウンドで実行するかバックグラウンドで実行するかを指定します。プログラムにリンクする必要がある、他のライブラリーの名前を指定します。すべての変更が済んだら、Enter を押します。
  12. 選択を確認してから、Enter を押します。
  13. リンク・エディットの完了後に、リンク・エディットでエラーが発生した場合には、メッセージを確認して変更を行います。ステップ 1 に戻り、処理を繰り返してください。
  14. Debug Tool Utilities のメイン・パネルに戻るまで、PF3 を押します。

この作業の完了後は、ライブラリーおよびプロモーション・プロセスの更新を参照してください。

HFS ファイル・システムでの Enterprise PL/I プログラムのコンパイル

HFS ファイル・システム上で Enterprise PL/I プログラムをコンパイルおよび起動する場合は、以下のいずれかを実行してください。

デフォルトでは、Enterprise PL/I コンパイラーは、相対パス名とファイル名をオブジェクト・ファイルに保管します。デバッグ・セッションの開始時に、プログラムを起動するのと同じ場所にソースがないと、Debug Tool はソースを見つけられません。この問題を回避するためには、プログラムのコンパイル時にソースの絶対パス名を指定します。例えば、次の一連のコマンドを実行すると、Debug Tool はソースを検索しません。これは、ソースが別のディレクトリー (/u/myid/mypgm) 内にあるためです。

  1. プログラムがあるディレクトリーに移動して、プログラムをコンパイルする。
    cd /u/myid/mypgm
    pli -g "//TEST.LOAD(HELLO)" hello.pli
  2. UNIX システム・サービスを終了し、TSO READY プロンプトに戻る。
  3. TEST ランタイム・オプションを使用してプログラムを起動する。
    call TEST.LOAD(HELLO) 'test/'

コンパイル・コマンドを次のように変更すると、Debug Tool はソースを検索します。

pli -g "//TEST.LOAD(HELLO)" /u/myid/mypgm/hello.pli

CICS 環境で実行するためにコンパイルするプログラムにも、同じ制約事項が適用されます。

c89 または c++ を使用した C プログラムのコンパイル

c89 または c++ を使用してアプリケーションをビルドする場合は、次のステップを実行してください。

  1. 通常どおりにユーザーのソース・コードをコンパイルしますが、-g オプションを指定してデバッグ情報を生成します。-g オプションは、TSO または MVS™ バッチでの、TEST コンパイラー・オプションに相当するものです。例えば、C ソース・ファイル fred.cu/mike/app ディレクトリーからコンパイルするには、次のように指定します。
    cd /u/mike/app
    c89 -g -o "//PROJ.LOAD(FRED)" fred.c
    注:
    上のコマンド行内の引用符 (") は必要です。
  2. TSO 環境を Debug Tool Utilities を使用しないプログラムのコンパイルまたは Debug Tool Utilities を使用したプログラムのコンパイルで説明されているようにセットアップします。
  3. 次のように入力し、TSO のもとでプログラムをデバッグします。
    FRED TEST ENVAR('PWD=/u/mike/app') / asis
    注:
    上記のコマンド行のアポストロフィ (') は必要です。ENVAR('PWD=/u/mike/app') は、環境変数 PWD をソース・ファイルのコンパイル元となったパスに設定します。Debug Tool は、この情報を使用してどこからソース・ファイルを読み取るかを決定します。

.mdbg ファイルを作成する場合は、dbgld コマンドで -c オプションを指定するか、CDADBGLD ユーティリティーで CAPSRC オプションを指定して、ソース・ファイルを.mdbg ファイルに取り込みます。dbgld コマンドと CDADBGLD ユーティリティーの使い方については、「z/OS XL C/C++ ユーザーズ・ガイド」を参照してください。Debug Tool ではプログラムをデバッグするために .mdbg ファイルへのアクセスが必要です。

HFS ファイル・システムでの C プログラムのコンパイル

HFS ファイル・システムでプログラムをコンパイルしたり起動したりする場合は、以下のいずれかを実行しなければなりません。

デフォルトでは、C コンパイラーは、ソース・ファイルの相対パスとファイル名をオブジェクト・ファイルに保管します。デバッグ・セッションの開始時に、プログラムを起動するのと同じ場所にソースがないと、Debug Tool はソースを見つけられません。この問題を回避するためには、プログラムのコンパイル時にソースの絶対パス名を指定します。例えば、次の一連のコマンドを実行すると、Debug Tool はソースを検索しません。これは、ソースが別のディレクトリー (/u/myid/mypgm) 内にあるためです。

  1. プログラムがあるディレクトリーに移動して、プログラムをコンパイルする。
    cd /u/myid/mypgm
    c89 -g -o "//TEST.LOAD(HELLO)" hello.c
  2. UNIX システム・サービスを終了し、TSO READY プロンプトに戻る。
  3. TEST ランタイム・オプションを使用してプログラムを起動する。
    call TEST.LOAD(HELLO) 'test/'

コンパイル・コマンドを以下に変更すると、Debug Tool はソースを検出します。

c89 -g -o "//TEST.LOAD(HELLO)" /u/myid/mypgm/hello.c

CICS 環境で実行するためにコンパイルするプログラムにも、同じ制約事項が適用されます。

.mdbg ファイルを作成する場合は、dbgld コマンドで -c オプションを指定するか、CDADBGLD ユーティリティーで CAPSRC オプションを指定して、ソース・ファイルを.mdbg ファイルに取り込みます。dbgld コマンドと CDADBGLD ユーティリティーの使い方については、「z/OS XL C/C++ ユーザーズ・ガイド」を参照してください。Debug Tool ではプログラムをデバッグするために .mdbg ファイルへのアクセスが必要です。

HFS ファイル・システムでの C++ プログラムのコンパイル

HFS ファイル・システムでプログラムをコンパイルしたり起動したりする場合は、以下のいずれかを実行しなければなりません。

デフォルトでは、C++ コンパイラーは、ソース・ファイルの相対パスとファイル名をオブジェクト・ファイルに保管します。デバッグ・セッションの開始時に、プログラムを起動するのと同じ場所にソースがないと、Debug Tool はソースを見つけられません。この問題を回避するためには、プログラムのコンパイル時にソースの絶対パス名を指定します。例えば、次の一連のコマンドを実行すると、Debug Tool はソースを検索しません。これは、ソースが別のディレクトリー (/u/myid/mypgm) 内にあるためです。

  1. プログラムがあるディレクトリーに移動して、プログラムをコンパイルする。
    cd /u/myid/mypgm
    c++ -g -o "//TEST.LOAD(HELLO)" hello.cpp
  2. UNIX システム・サービスを終了し、TSO READY プロンプトに戻る。
  3. TEST ランタイム・オプションを使用してプログラムを起動する。
    call TEST.LOAD(HELLO) 'test/'

コンパイル・コマンドを以下に変更すると、Debug Tool はソースを検出します。

c++ -g -o "//TEST.LOAD(HELLO)" /u/myid/mypgm/hello.cpp

CICS 環境で実行するためにコンパイルするプログラムにも、同じ制約事項が適用されます。

.mdbg ファイルを作成する場合は、dbgld コマンドで -c オプションを指定するか、CDADBGLD ユーティリティーで CAPSRC オプションを指定して、ソース・ファイルを.mdbg ファイルに取り込みます。dbgld コマンドと CDADBGLD ユーティリティーの使い方については、「z/OS XL C/C++ ユーザーズ・ガイド」を参照してください。Debug Tool ではプログラムをデバッグするために .mdbg ファイルへのアクセスが必要です。

ライブラリーおよびプロモーション・プロセスの更新

ライブラリーを使用してプログラムの保守を行い、プログラムで品質とテストのレベル間を移動するのにプロモーション・プロセスを使用する場合、ご使用のプログラムに関する情報を取得するために必要なファイルを Debug Tool が確実に検出できるように、これらのプロセスを更新しなければならない場合があります。例えば、最終実動レベルでは開発レベルと同じライブラリーに対してアクセス権限を持たずに、最終実動レベルのプログラムをデバッグしようとすると、以下のリソースへアクセスできるように最終実動レベルの環境を更新しなければならない場合があります。

他の問題判別ツールを使用している場合は、付録C. IBM 問題判別ツール製品で使用するプログラムのコンパイルおよびアセンブルに関するクイック・スタート・ガイドで、 使用しているコンパイラーまたはアセンブラーに対応するトピックを参照してください。 これらのトピックでは、問題判別ツールがそれに必要なファイルを見つけられるように、ご使用のレベル全体でどのファイルを移動するかについて説明します。

データ・セットを割り振る際に SUBSYS=ssss パラメーターを指定する必要があるライブラリー・システムでソース・コードを管理する場合は、お客様またはお客様のサイトで ssss の値を提供する EQAOPTS SUBSYS コマンドを指定する必要があります。これは次のタイプのプログラムの場合に行ってください。

CICS プログラムでは、これはサポートされません。EQAOPTS コマンドの指定方法については、「Debug Tool リファレンスおよびメッセージ」または「Debug Tool カスタマイズ・ガイド」を参照してください。

Debug Tool を開始する優先方法をインプリメントするために必要な変更

このトピックでは、2および Debug Tool を開始する方法の選択の完了後に収集した情報を使用して、 TEST ランタイム・オプション・ストリングを記述してから、適切な場所にそのストリングを保存します。

複数の異なる TEST ランタイム・オプション・ストリングを記述する必要がある場合があります。例えば、CICS プログラム用に記述した TEST ランタイム・オプション・ストリングが、IMS™ プログラムで使用できる TEST ランタイム・オプション・ストリングと同じであるとは限りません。その場合は、表 13 を使用して、デバッグするプログラムのタイプ別に使用するストリングを記録してください。

表 13. サイトで必要な TEST ランタイム・オプション・ストリングの記録
TEST ランタイム・オプション・ストリング (TEST(ALL,,,MFI%SYSTEM01.TRMLU001:) など)
TSO

JES バッチ

UNIX システム・サービス

CICS

DB2

DB2 ストアード・プロシージャー (PROGRAM TYPE=MAIN)

DB2 ストアード・プロシージャー (PROGRAM TYPE=SUB)

IMS TM

IMS バッチ

IMS BTS

TEST ランタイム・オプション・ストリングの形式を熟知していない場合は、以下のトピックを参照してください。

TEST ランタイム・オプション・ストリングは、記述した後に適切な場所に保存する必要があります。 表 11 で記録した情報を使用して、 TEST ランタイム・オプション・ストリングの保存場所および保存方法についての説明が含まれた、以下のリストを確認します。

EQADBCXT、EQADICXT、または EQADDCXT ユーザー出口ルーチンを介する場合
言語環境プログラム ユーザー出口を使用した TEST ランタイム・オプションの指定を参照してください。
DFSBXITA ユーザー出口ルーチンの使用
DFSBXITA ユーザー出口ルーチンの設定を参照してください。
CADP トランザクションの使用
CADP を使用したデバッグ・プロファイルの作成および保管を参照してください。
DTCN トランザクションの使用
DTCN プロファイルの作成と保管を参照してください。
DB2 カタログの使用
DB2 ストアード・プロシージャー・プログラムの準備を参照してください。
CEETEST、__ctest()、または PLITEST の呼び出しのコーディング
以下のいずれかのトピックを参照してください。
CEEUOPT または CEEROPT の使用
以下のいずれかのトピックを参照してください。
JCL の CEEOPTS DD ステートメント、または TSO の CEEOPTS 割り振りの使用
Debug Tool Utilities の「JCL for Batch Debugging」オプションの使用
プログラム開始時における EXEC ステートメントのパラメーターの使用
EXEC ステートメントを指定する場合、パラメーターとして TEST ランタイム・オプションを含めてください。
プログラム開始時に RUN ステートメントのパラメーターを使用
RUN ステートメントの指定時に、TEST ランタイム・オプションをパラメーターとして含めます。
プログラム開始時における CALL ステートメントのパラメーターの使用
Debug Tool の始動の例を参照してください。
EQASET トランザクションの使用
非言語環境プログラム IMS MPP の EQASET トランザクションの実行を参照してください。
EQANMDBG プログラムの使用
言語環境プログラムの外部で始動されるプログラムの Debug Tool の始動を参照してください。

5.
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。これにより、EQAOPTS MDBG コマンドのすべての設定 (デフォルト設定を含む) がオーバーライドされます。