Rational Developer for System z
PL/I for Windows, Version 8.0, プログラミング・ガイド

デバッグでのダンプの使用

プログラムのデバッグでは、多くの場合、プログラムで使用されるストレージの全部または一部の印刷出力 (ダンプ) を取得すると便利です。ダンプを使って、トレース情報を提供することもできます。トレース情報は、プログラム内のエラーの原因を突き止めるのに役立ちます。

次の 2 種類のダンプが有効です。

IMPRECISE コンパイル時オプションを使用すると、トレース情報が不完全になる可能性があります。IMPRECISE オプションの詳細については、IMPRECISE を参照してください。

定様式 PL/I ダンプ - PLIDUMP

PLIDUMP を使用すると、以下の情報を取得できます。

定様式 PL/I ダンプを取得するには、PLIDUMP への呼び出しをプログラムに組み込む必要があります。CALL ステートメントが現れる場所であればどこでも、ステートメント CALL PLIDUMP を置くことができます。書式は以下のとおりです。

  call plidump('dump options string', 'dump title string');
ダンプ・オプション・ストリング (dump options string)
以下の任意のダンプ・オプション文字で構成されるストリングを示す式。
T - トレース
PL/I は呼び出しトレースを生成します。
NT - トレースなし
ダンプには、呼び出しトレースは出力されません。
F - ファイル情報
ダンプには、オープンしているすべてのファイルの属性の完全セットと、アクセス可能なすべての入出力バッファーの内容が出力されます。
NF - ファイル情報なし
ダンプには、ファイル情報は出力されません。
S - 停止
ダンプ後にプログラムは終了します。
E - 終了
現行スレッドまたはプログラム (それがメイン・スレッドの場合) は、ダンプ後に終了します。
K
無視されます。
NK
無視されます。
C - 継続
プログラムはダンプ後も継続します。

PL/I は、オプションを左から右に読み取ります。無効なオプションは無視されます。矛盾するオプションが存在する場合は、右端にあるオプションが採用されます。

dump title string (ダンプ・タイトル・ストリング)
必要な場合は文字に変換され、ダンプのヘッダーとして印刷される式。このストリングは、実質的には長さの制限はありません。PL/I は、このストリングをヘッダーとしてダンプに印刷します。文字ストリングが省略されると、PL/I はヘッダーを印刷しません。

プログラムが PLIDUMP を何度も呼び出す場合は、そのたびに異なるユーザー ID 文字ストリングを使うようにしてください。そうすれば、各ダンプが発生した場所を容易に識別できます。このヘッダーのほかに、新たに PLIDUMP が呼び出されるたびに、日付、時刻、およびページ番号 1 を示す見出しがユーザー ID の上に印刷されます。

PLIDUMP デフォルト

デフォルトのダンプ・オプションは T、F、および C で、ダンプ・タイトル・ストリングはヌルです。

  plidump('TFC', ' ');
推奨される PLIDUMP コーディング

PLIDUMP はプログラム内のどこからでも呼び出せますが、通常のデバッグ方法では ON ユニットから PLIDUMP を呼び出します。ダンプ後のプログラム継続はオプションなので、プログラムは PLIDUMP を使用すれば、プログラム実行中に一連のダンプをとることができます。

DD:plidump 環境変数を使用すれば、PLIDUMP 出力を配置する場所を指定できます。例えば、次のように指定します。

  set dd:plidump = d:¥mydump;

PLIDUMP 指定では、他のオプション (RECSIZE など) をオーバーライドすることはできません。このファイルに関連付けられているデフォルト装置は stderr: です。

PLIDUMP の例

図 5 に示すプログラムを実行すると、図 6 で示すような定様式ダンプが生成されます。

図 5. 定様式ダンプを生成する PL/I コード
  TestDump: proc options(main);
     declare
        Sysin input file,
        Sysprint stream print file;
     open file(Sysprint);
     open file(Sysin);
     put skip list('AbCdEfGhIjKlMnOpQrStUvWxYz');
     call IssueDump;

     IssueDump: proc;
        call plidump( ' ', 'Testing PLIDUMP');
     end IssueDump;

  end TestDump;

IssueDump プロシージャー内にある PLIDUMP の呼び出しでは、PLIDUMP オプション (このオプションは 2 つの文字ストリングのうちの最初のストリング) を何も指定していないので、デフォルトが使用されます。また、PL/I のデフォルト・ファイル SYSIN および SYSPRINT が明示的にオープンされているので、定様式ダンプでは、入出力バッファーの該当部分の内容も表示されます。

図 6. PLIDUMP 出力の例
 1     * * * PLIDUMP * * *  Date = 910623  Time = 142249090                   Page 0001

 2   User identifier: Testing PLIDUMP


 3                                           * * * Calling trace * * *
     IBM0092I The PL/I PLIDUMP Service was called with Traceback (T) option
     At offset +00000024 in procedure with entry ISSUEDUMP
     From offset +0000010B in procedure with entry TESTDUMP
                                             * * * End of calling trace * * *

                                         * * * File Information * * *
                         Attributes of file SYSIN
 4   STREAM INPUT EXTERNAL
 5   ENVIRONMENT( CONSECUTIVE RECSIZE(80) LINESIZE(0) )
 6   I/O Built-in functions:  COUNT(0) ENDFILE(0)
 7   I/O Buffer:          000D9008  00000000 00000000 00000000 00000000   '................'
                          000D9018  00000000 00000000 00000000 00000000   '................'
                          000D9028  00000000 00000000 00000000 00000000   '................'
                          000D9038  00000000 00000000 00000000 00000000   '................'
                          000D9048  00000000 00000000 00000000 00000000   '................'
                          000D9058  0000                                  '..'

                         Attributes of file SYSPRINT
     STREAM OUTPUT PRINT EXTERNAL
     ENVIRONMENT( CONSECUTIVE RECSIZE(124) LINESIZE(120) PAGESIZE(60) )
     I/O Built-in functions:  PAGENO(1) COUNT(1) LINENO(1)
 8   I/O Buffer:          000D8008  20416243 64456647 68496A4B 6C4D6E4F   ' AbCdEfGhIjKlMnO'
                          000D8018  70517253 74557657 78597A20 0D0A0000   'pQrStUvWxYz ....'
                          000D8028  00000000 00000000 00000000 00000000   '................'
                          000D8038  00000000 00000000 00000000 00000000   '................'
                          000D8048  00000000 00000000 00000000 00000000   '................'
                          000D8058  00000000 00000000 00000000 00000000   '................'
                          000D8068  00000000 00000000 00000000 00000000   '................'
                          000D8078  00000000 00000000 00000000            '............'

                                     * * * End of File Information * * *
                                           * * * End of Dump * * * * * *

 1 
PLIDUMP が呼び出された時刻と日付。個別の PLIDUMP 呼び出しごとにこの情報が出力されます。
 2 
PLIDUMP 呼び出しで指定された文字ストリング (PLIDUMP に供給される 2 つのストリングのうちの 2 番目)。この情報は、いくつかのダンプが生成される場合、ダンプを識別するのに役立ちます。
 3 
トレース情報。 * * * Calling trace * * ** * * End of calling trace * * * で囲まれた部分です。この情報によって、PLIDUMP の呼び出し元であるプロシージャーにトレースバックできます。上記の例では、PLIDUMP は、TESTDUMP プロシージャーにネストされているプロシージャー ISSUEDUMP から呼び出されています。各プロシージャーの 16 進オフセットもトレース情報として提供されます。

デフォルトでは T オプションが使用されるのでトレース情報が提供されますが、PLIDUMP に NT オプションを指定すれば、トレース情報を抑制できます。

 4 
SYSIN (プログラムで明示的にオープンされた) のファイル属性。
 5 
ファイル SYSIN の ENVIRONMENT オプション。
 6 
ファイル SYSIN の関連 I/O 組み込み関数の値。
 7 
SYSIN ファイルの入出力バッファーの内容。最初の列は 16 進アドレスで、以降の列はメモリー内容の 16 進表現です。
 8 
SYSPRINT の入出力バッファーの内容。PLIDUMP に供給された 2 番目の文字ストリング (AbCd...) が入出力バッファーに入っている点に注意してください。入出力バッファーのテキスト表現が、行の右側に表示されています。

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)