Rational Developer for System z、バージョン 7.6.1

複雑なアプリケーションにおける問題解決

このセクションでは、複雑なアプリケーションをデバッグしようとする時に遭遇する可能性のあるいくつかの問題と、考えられる各解決策を記載してあります。

ライブラリー・ルックアサイド機能 (LLA) からロードしたプログラムのデバッグ

Debug Tool は、バインダー API を使用して、プログラムに関するメモリー内の情報を取得します。バインダー API は、ロード・モジュールまたはプログラム・オブジェクトが入っているデータ・セットに保管されている情報にアクセスする必要があります。z/OS® は、通常、Debug Tool がバインダー API に渡せるようにプログラムのロード元のデータ・セットの名前を Debug Tool に与えることができます。しかし、z/OS は、LLA からロードされたプログラムについては、この情報を持っていません。

Debug Tool は、LLA からロードされたプログラムをデバッグしようとするときに、以下のステップを実行します。

以下に示す制約が適用されます。

システム接頭部が付いた名前のユーザー・プログラムのデバッグ

Debug Tool は、特定の接頭部で始まるロード・モジュール名とコンパイル単位名はシステム・コンポーネントであると想定します。例えば、EQAxxxxx は Debug Tool モジュール、CEExxxxx は言語環境プログラムのモジュール、および IGZxxxxx は COBOL モジュールです。

Debug Tool は、これらの接頭部が付いたロード・モジュールまたはコンパイル単位をデバッグしようとしません。その理由は以下のとおりです。

ユーザーのロード・モジュールまたはコンパイル単位の名前を付ける場合にシステム接頭部のいずれかと競合する接頭部にした場合は、このセクションに記載された NAMES INCLUDE コマンドおよびその説明を使ってそのロード・モジュールまたはコンパイル単位をデバッグできます。

重要:
NAMES INCLUDE コマンドを使用してシステム・コンポーネントをデバッグしないでください。このシステム・コンポーネントには、例えば、Debug Tool、言語環境プログラム、CICS®、IMS™、またはコンパイラーのランタイム・モジュールなどがあります。 これらのシステム・コンポーネントをデバッグしようとすると、予測不能な障害が発生する可能性があります。このコマンドの使用対象は、Debug Tool がシステム・コンポーネントとして認識する接頭部が付いたユーザー・プログラムをデバッグする場合に限定してください。

システム接頭部の表示

Debug Tool がシステム接頭部として認識している接頭部一覧を表示できます。これを行うには以下のコマンドを使用します。

NAMES DISPLAY ALL EXCLUDED LOADMODS;
NAMES DISPLAY ALL EXCLUDED CUS;

上記のコマンドはユーザー要求 (NAMES EXCLUDE コマンドを使用して) で現在実行されている名前一覧を表示します。その後ろに Debug Tool が除外する名前一覧を表示するセクションが続きます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

システム・コンポーネントと同じような名前が付いたプログラムのデバッグ

Debug Tool が除外対象とする接頭部のいずれかでお客様のプログラム名が始まる場合、NAMES INCLUDE コマンドを使用してこのプログラムがユーザーのロード・モジュールまたはコンパイル単位であって、システム・プログラムでないことを Debug Tool に示します。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

データしか入っていないモジュールのプログラムのデバッグ

一部のプログラムには、実行可能コードが入っていないロード・モジュールまたはコンパイル単位が含まれています。 これらのモジュールはデータしか入っていないプログラムとして認識されます。このようなモジュールはアセンブラー・プログラムでは一般的です。 一部のケースでは、Debug Tool はこのようなモジュールには実行可能な命令が入っていないと認識せず、ブレークポイントを設定しようする場合があります。このことは、このモジュールの内容をオーバーレイすることを意味します。

このような場合は、NAMES EXCLUDE コマンドを使用して、これらのモジュールが実行可能コードがない、データしか入っていないモジュールである旨、Debug Tool に示すことができます。 それにより、Debug Tool はデータしか入っていないモジュールの中にブレークポイントを設定しようとしません。NAMES EXCLUDEコマンドを使用して実行可能プログラムが入ったモジュールを除外する場合には、 このようなモジュールが依然として Debug Tool 内に現れる可能性があり、 Debug Tool は依然としてそのモジュール内にブレークポイントを設定しようとする可能性があります。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

大きなアプリケーションのデバッグの最適化

一部の大規模アプリケーションには、デバッグ不要の大量のロード・モジュールまたはコンパイル単位が入っている可能性があります。一部のケースでは、これらのロード・モジュールまたはコンパイル単位に対するデバッグ・データの作成と操作により、大量のメモリー、CPU 時間、およびその他のリソースが消費される可能性があります。

NAMES EXCLUDE コマンドを使用して、このようなモジュールに対するデバッグ・データの維持が不要である旨、Debug Tool に示すことができます。NAMES EXCLUDE コマンドを使用して実行可能モジュールを除外する場合、 Debug Tool が実行可能モジュールのデバッグ・データを必要とする場合があります。 次のリストで、包括的ではありませんが、考えられる場合を説明します。

また、据え置かれた AT ENTRY コマンドを入力した場合、Debug Tool は、ロード・モジュールと据え置かれた AT ENTRY のターゲットであるコンパイル単位に、暗黙的な NAMES INCLUDE コマンドを生成します。 これらの名前がプログラムの後の方で現れた場合、前の NAMES EXCLUDE コマンドでその名前を指定していても Debug Tool は除外しません。

上記のすべての場合で、Debug Tool は必要に応じてデバッグ・データをロードします。これらのモジュールは Debug Tool に認識させることができます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

現行 NAMES 設定の表示

NAMES コマンドの現在の設定を表示するには、NAMES DISPLAY コマンドを使用します。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

NAMES コマンドをインプリメントするための EQAOPTS の使用方法

Debug Tool が既に認識しているロード・モジュールまたはコンパイル単位に関して、NAMES コマンドを使用できません。このため、NAMES コマンドを使用して、初期ロード・モジュール、または初期ロード・モジュールに含まれるコンパイル単位を包含または除外したい旨、Debug Tool に示すことはできません。 これを行いたい場合は、NAMES コマンド相当の EQAOPTS Debug Tool カスタマイズ・モジュールに制御ステートメントをコーディングする必要があります。

EQAOPTS を使用すると、特定の Debug Tool 機能をカスタマイズ可能になります。 EQAOPTS の説明の詳細は「Debug Tool カスタマイズ・ガイド」を参照してください。EQAOPTS を生成するには EQAXOPT アセンブラー・マクロを呼び出します。 NAMES コマンドを処理するために、EQAXOPT アセンブラー・マクロを以下の形式でコーディングします。

EQAXOPT NAMES,positional_parameter_2,positional_paremeter_3,positional_parameter_4

このマクロでは、2 番目、3 番目、4 番目の定位置パラメーターを、対応する NAMES コマンド内の各フィールドのようにコーディングします。下表には、Debug Tool コマンドをコーディングして EQAXOPT マクロと同等にする方法を記載してあります。

Debug Tool コマンド EQAXOPT マクロ呼び出し
NAMES EXCLUDE CU “ABC1*"; EQAXOPT NAMES,EXCLUDE,CU,ABC1*

NAMES オプション指定の EQAXOPT マクロを、単一の EQAOPTS 内で必要なだけ呼び出すことができます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。


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

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