GTFトレースの採取とフォーマット

MVSには、GTF(Generalized Trace Facility)と呼ばれる汎用トレース機能があります。MVS自身やアプリケーション・プログラムなどの動作を、システム・レベルでトレースする機能です。一般のプログラムのデバッグには向きませんが、アセンブラー言語で作成されたシステム系プログラムなどの動きを追跡したりする目的で利用することもできます。GTFではトレースする項目をイベントと呼び、イベントには下記のようなものがあります。

  • SVC命令の発行
  • デバイスI/O動作
  • プログラム割込みの発生
  • VTAMネットワークI/O動作 など
  • その他、ユーザー・プログラムでデータを書き込むこともできます。

    GTFは、余程のことがない限り一般のユーザーが自ら使うことはありませんが、基盤系ソフトやISV製品などに問題があると考えられる時にメーカーやベンダーの依頼でトレースを採ることがありますので、使い方は知っておいた方がいいでしょう。トレースの採取やフォーマットのパラメーターについては、依頼する人が必要なものを提示しますからユーティリティ名や基本のJCLコーディングなどがわかれば十分です。

    GTF起動プロシージャ・サンプル

    トレースデータセットの作成

    トレース・データを格納するデータセットは、IEFRDERまたはGTFOUTnn DDステートメントで定義します。長時間トレースを採取する場合、1つのデータセットでは足りなくなることがあります。そのような場合は、複数のトレース・データセットを定義して利用できます。1つであっても複数であっても、利用可能なデータセットが一杯になると先頭のデータセットから循環使用されます。新規にトレース・データセットを作成する場合は、PSデータセットとして容量のみを指定します(DCBにDSORG=PSを指定しないとGTFの起動は失敗する)。レコード形式、ブロック長とレコード長は、GTFが起動時に設定し直します。

    GTFの起動操作


    S GTF起動プロシージャ名.GTF (トレースオプションの入力を促すMSGが出る)
    nn,トレースオプション (MSGに従って追加のトレースオプションを入力する)
    [nn,追加のトレースオプション]
    nn,U

    ※GTFは同時に複数起動することはできません。プロシージャ名を変えてもだめです。

    GTFトレース・オプションの例

    SVCトレースを採る


    nn,TRACE=SVCP,JOBNAMEP
    nn,SVC=(48,56),JOBNAME=xxxxxxxx,END
    nn,U

    特定のジョブに関してのみトレースする場合は、JOBNAMEPオプションが利用できる。

    I/Oトレースを採る


    nn,TRACE=IOP,SSCHP,CCWP
    nn,IO=SSCH=205
    nn,CCW=(SI,DATA=1024)
    nn,END
    nn,U

    アドレス205のデバイスのI/O動作をトレースする例。

    VTAM送受信データのトレースを採る


    nn,TRACE=USRP
    nn,USR=FEF
    nn,END
    nn,U

    F NET|VTAM,TRACE,TYPE=BUF,ID=LU名,AMOUNT=FULL端末を使って
    トレースしたい処理を行う
    F NET|VTAM,NOTRACE,TYPE=BUF,ID=LU名

    LU名で指定された端末とホスト間のVTAM送受信データをトレースする例。
    IBM製品(TSOなど)に関しては、セキュリティー上の理由で送受信データに関してはトレースされない場合がある(各製品の起動パラメーターなどの調整が必要)

    トレース・データのフォーマットJCLサンプル

    IPCSでGTFサブコマンドを指定すれば、トレース・データをフォーマットして印刷できます。VTAMなどUSRイベントとしてトレースされたものは、サンプルのようにUSRパラメーターを指定します。SVCやI/Oなどのシステム・トレースの場合、GTF採取時にフィルタリングしていれば、単にGTFと書けばデータセット内の全レコードがフォーマットされます。

    関連マニュアル

    「zOS MVS:診断のツールと保守援助プログラム」
    「zOS MVS:対話式問題管理システム(IPCS)コマンド」