説明
DEBUG コンパイラー・オプションが指定されている場合、
コンパイラーは、それぞれのコンパイル単位ごとに .dbg ファイルを作成します。
次に、すべての .dbg ファイルのパス名が、
モジュール (これは実行可能ファイルまたは DLL のどちらかです ) に保管されます。
dbgld コマンドは、
モジュールに関連付けられているすべての .dbg ファイルを開いて、関数、グローバル変数、外部タイプ、
およびソース・ファイルのすべてを、.mdbg 拡張子が付いた単一モジュール・マップ・ファイルに保管します。
さらに、すべての .dbg ファイルの内容が、
この 1 つの .mdbg ファイルにまとめられ、パッケージされます。 dbgld コマンドは、バインディング後に一度だけ実行すればすみます。
要求ロードをサポートするデバッガーは、デバッグ情報に高速でアクセスするための .mdbg ファイルを使用できます。
デバッガーのパフォーマンスを改善するためのモジュール・マップの使用についての詳細は、「z/OS Common Debug Architecture User's Guide」を参照してください。
元のソース・ファイルがデバッグ時に使用できない (例えば、ソース・ファイルが別のディレクトリーに移動されているか、またはコンパイルおよびデバッグが別のマシン上で実行されている) 場合は、ソース・ファイルを再配置する前に、そのソース・ファイルの内容を .mdbg ファイルに追加することができます。dbgld コマンドを
呼び出すときには、-c オプションを指定することができます。これは、
ソース・ファイルのコンテンツをデフォルトで dbgld コマンドによって .mdbg ファイルに取り込めないからです。取り込まれたソースをサポートするデバッガーは、.mdbg ファイルからソース・ファイルの内容を取り出すことができます。
オプション
オプション - -c
- 取り込まれたソース・ファイルをモジュール・マップに追加します。このモジュール・マップは、実行可能コード行を含むすべてのファイルから構成されます。
- -cf
- 取り込まれたソース・ファイルをモジュール・マップに追加します。このモジュール・マップは、実行可能コード行を含むかどうかに関係なく、すべてのファイルから構成されます。
- -v
- バージョン情報を stderr に書き込みます。
- ファイル
- モジュール名であり、以下を使用できます。
- z/OS® UNIX ファイルの絶対パス名
- z/OS UNIX ファイルの相対パス名
- 完全修飾 MVS™ データ・セット (PDS メンバー)
dbgld コマンドの出力は、
モジュールの名前の後に
.mdbg 拡張子がついたファイルです。
このファイルは、常に、現行ディレクトリーで書き込まれます。例えば、
モジュール名が
/mypath/mymodule の場合、
mymodule.mdbg というファイルが現行ディレクトリーに作成されます。
このファイルがすでに存在している場合は、上書きされます。
制約事項
dbgld を使用する場合、以下の制約事項が適用されます。
- ソース・ファイルは、DEBUG コンパイラー・オプションを使用してコンパイルする必要があります。
- 有効なモジュールの名前を dbgld ユーティリティーに受け渡す必要があります。
モジュールは、EDIT=YES バインダー・オプション (これがデフォルトです) でバインドする必要があります。
EDIT=NO の場合、エラー・メッセージが 生成されます。
- モジュールに関連付けられている .dbg ファイルは、
コンパイルの際にこれらのファイルがあったディレクトリーに存在している必要があります。
そうしない場合、これらのファイルはモジュール・マップに追加されず、
また、デバッグの際に、モジュール・マップによって、デバッグ情報がコンパイル単位に使用可能になりません。
見つからなかったそれぞれの .dbg ファイルごとに、エラー・メッセージが 生成されます。
- dbgld コマンドは、
.mdbg ファイルを常に現行ディレクトリーに作成するので、
このコマンドは、書き込み権限があるディレクトリーから実行する必要があります。
- NOGOFF と NOLONGNAME でコンパイルされたソース・ファイルは、ユーティリティーによって処理されません。
モジュール全体がこれらのコンパイル単位で構成されている場合、
エラー・メッセージが生成され、デバッグ情報
が見つからなかったことが示されます。 この制限を緩和するには、LONGNAME または GOFF で
アプリケーションをコンパイルしてください。
例
次の例は、
hello1.c および
hello2.c をコンパイルする方法、
および、
hello.mdbg というファイルにモジュール・マップを作成する方法を示しています。
xlc -g hello1.c hello2.c -o hello
dbgld hello
次の例は、
hello1.c および
hello2.c をコンパイルする方法、ならびに、取り込まれたソースを含む
hello.mdbg というファイルにモジュール・マップを作成する方法を示しています。
xlc -g hello1.c hello2.c -o hello
dbgld -c hello
次の例は、dbgld ユーティリティー、および、
モジュール・マップを作成するときの Common Debug Architecture のランタイムのバージョン情報を表示する方法を示しています。
dbgld -v hello
出力は次のようになります。
CDA0000I Utility(dbgld ) Level(level name)
CDA0000I Library(elf ) Level(level name)
CDA0000I Library(dwarf ) Level(level name)
CDA0000I Library(ddpi ) Level(level name)
コンパイルの際に
-g オプションが欠落している場合、
hello.mdbg は生成されず、次の例に示すような警告メッセージが印刷されます。
xlc hello1.c hello2.c -o hello
dbgld hello
この出力は、デバッグ情報が
hello になかったことを通知する警告メッセージです。
終了値
dblgd の終了値は次のとおりです。
- 0
- 正常終了
- 4
- 警告
- 8
- エラー
- 12
- 重大エラー