C プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択
このトピックでは、使用可能なデバッグ・シナリオと、正しい TEST コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。
C コンパイラーは、TEST コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成と配置を制御します。
z/OS® Debugger は、最適化された C プログラムのデバッグをサポートしません。 NOOPTIMIZE 以外のコンパイラー・オプションは使用しないでください。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択するのに役立ちます。
- 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: すべての z/OS Debugger 機能を取得できれば、(
DEBUG(FORMAT(DWARF))を使用した場合と比べて) プログラム・サイズが大きくなってもかまわない場合は、TEST(ALL,HOOK,SYMBOL)を使用します。 - シナリオ B:
NOTESTコンパイラー・オプションを指定してコンパイルすると、一部の z/OS Debugger 機能を取得できます。 その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。 - シナリオ C: ALCS で実行されているプログラムをデバッグする場合は、
TESTコンパイラー・オプションのHOOKサブオプションを使用してコンパイルする必要があります。
どのシナリオの場合も、他の Application Delivery Foundation for z/OS ツールを使用している場合、IBM® Application Delivery Foundation for z/OS Common Components カスタマイズ・ガイドおよびユーザー・ガイド のトピック『z/OS XL C および C++ プログラム』を参照して、すべての Application Delivery Foundation for z/OS ツールで必要となるファイルの作成に必要なコンパイラー・オプションをすべて指定していることを確認してください。
- シナリオ A: すべての z/OS Debugger 機能を取得できれば、(
- シナリオ B の場合、次の手順を行います。
- z/OS バージョン 1.6 またはバージョン 1.7 で実行している場合は、Language Environment®の APAR PK12833 用の PTF がインストールされていることを確認します。
- Dynamic Debug機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
- z/OS Debugger の始動後に、
SET DYNDEBUG OFFコマンドを入力して、Dynamic Debug 機能を非アクティブ化していないことを確認します。
- 次の作業を行う必要があるかどうかを確認する。
プログラムをコンパイルする場合は、SYSIN をインストリーム・データ・セットに関連付けないでください (例えば、//SYSIN DD *)。z/OS Debugger は、デバッグするプログラムのソースを見つけるために永続データ・セットにアクセスする必要があります。
#pragmaステートメントを使用してTESTまたはNOTESTコンパイラー・オプションを指定する場合は、#pragma ステートメントによる C プログラムのコンパイル を参照してください。- C
TESTコンパイラー・オプションは、GONUMBERコンパイラー・オプションを暗黙的に指定します。これにより、コンパイラーは、入力ソース・ファイルに対応する行番号テーブルを生成します。NOGONUMBERを指定することにより、このオプションを明示的に除去することができます。TESTオプションとNOGONUMBERオプションを一緒に指定すると、コードをステップスルーする際に z/OS Debugger は現在の実行行を表示しません。 TESTコンパイラー・オプションと、OPT(1)またはOPT(2)コンパイラー・オプションのどちらかを指定してコンパイルされたプログラムは、指定されたTESTサブオプションに関係なく、行、ブロック、およびパス点にフックを持つことも、シンボル・テーブルを生成することもありません。 最適化プログラムには、関数の入り口点と出口点のフックだけが生成されます。TESTサブオプションは、矛盾するサブオプション (例えば、PATHとNOPATHの両方) を含めて、いくつでも指定できます。 この場合、最後に指定されたサブオプションが有効となります。 例えば、TEST(BLOCK, NOBLOCK, BLOCK, NOLINE, LINE)を指定すると、有効になるのはTEST(BLOCK, LINE)です。これは、BLOCKとLINEが最後に指定されているためです。- 類似した 2 つの
TESTサブオプションが指定されていても、重複フックが生成されることはありません。 例えば、TEST(BLOCK, PATH)を指定した場合、BLOCKサブオプションによって、入り口点および出口点にフックが生成されます。PATHサブオプションも、入り口点と出口点にフックを生成するサブオプションです。 しかし、それぞれの入り口点と出口点では、1 つのフックしか生成されません。
| コンパイラー・オプションまたはサブオプションの名前 | 影響の説明 |
|---|---|
| NOTEST | 以下のリストは、NOTEST コンパイラー・オプションが z/OS Debugger の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。
|
| TEST | 以下のリストは、TEST コンパイラー・オプションの一部のサブオプションが z/OS Debugger の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。
|
| NOSYM | 以下のリストは、
|
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連参照
- z/OS XL C/C++ ユーザーズ・ガイド での
TESTコンパイラー・オプションの説明