アセンブラの汎用トレース機能 (GTF) は、アセンブラ・プログラムの問題の箇所と原因を特定するプロセスの高速化に役立つデバッグ・ツールです。GTF ツールを使用して、プログラムで実行された操作を示すトレース・ファイルを作成します。デバッグするプログラムをコンパイルする必要はありません。各種レベルの詳細を要求できます。例えば、トレース要求プログラムのレベル情報を実行してから、トレースの詳細レベルと開始ポイントおよび終了ポイントを指定して特定セクションに対する追加トレースを実行できます。
汎用トレース機能を有効にするには、環境変数 GTFFILE を、トレース・ファイルの絶対パスとファイル名に設定します。この環境変数は、 %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\bin\MF370CTL.CFG ファイルで設定します。
次の GTF オプションは、GTFFILE 環境変数の後に指定できます。
オプション | 説明 |
---|---|
GTFIMIN | トレースを開始する命令カウント。デフォルトは 00000000 です。 |
GTFIMAX | トレースを終了する命令カウント。デフォルトは FFFFFFFF です。 |
GTFAMIN | トレースを開始する命令アドレス。デフォルトは 00000000 です。 |
GTFAMAX | トレースを終了する命令アドレス。デフォルトは FFFFFFFF です。 |
GTFOPT | 詳細のレベル。この環境変数は、次の 3 文字のコードを 1 つ以上コンマ区切りで設定して目的の詳細レベルを示すことができます。 デフォルト値は BAL、PGM、FOC です。 |
トレース・ファイルのサイズは、指定したオプションによって変わり、非常に大きくなる場合があります。このため、開始する際に、必ずトレースをデフォルトのオプションで実行して詳細トレースの最適な開始ポイントを確認することをお奨めします。FIO、INS または ALL などのオプションを使用して詳細トレースを実行する場合、GTFIMIN および GTFIMAX、あるいは GTFAMIN および GTFAMAX オプションを使用して開始ポイントと終了ポイントを指定します。
指定したトレース・オプションに関係なく、プログラムの割り込みが行われると、トレース・ファイルには必ず割り込みの原因となった命令の追加行が含まれます。これらの行はプログラム・ステータス語 (PSW) を表示し、PSW には最初の語の下位バイトの割り込みコードとレジスタが含まれます。
GTF トレース・ファイルは、ASCII 互換エディタまたはワード・プロセッサを使用して表示または印刷できます。ファイルの先頭には、ファイルの生成に使用される GTF オプションと、トレースの開始日時があります。ファイルの最終行には、トレースの終了日時が表示されます。この行がない場合、トレースが正常に終了しなかったために完了していない可能性があります。この問題は、汎用トレース機能が有効なアセンブラ・デバッガを使用して対話式デバッグ・セッションを実行している場合に起こることがあり、復元できないエラーが発生します。GTF トレース・ファイルを完了させるには、デバッグ・セッションを強制終了させずに終了させるようにします。S(tep) または G(o) を押して、トレース・ファイルにプログラム例外を記録してからデバッグ・セッションを停止します。
次に、IMS COBOL およびアセンブラ・アプリケーションのデフォルトのトレースのトレース・ファイルの例を示します。
GTF option GTFFILE =D:\MFUSER\CONFIG\GTF.LOG GTF option GTFOPT =BAL,FOC,PGM GTF option GTFIMIN =00000000 GTF option GTFIMAX =FFFFFFFF GTF option GTFAMIN =00000000 GTF option GTFAMAX =FFFFFFFF GTF trace file DATE=000114 TIME=08495898 INS-CTR INS-ADDR INS-OP 00000043 81000188 BALR 05EF 00000044 81005998 BALR 05F0 00000047 810059A2 LINK NAME=AIBTDLI ENTRY=(COBOL) 00000051 810001E6 LOAD NAME=LDDECTBL ENTRY=810059D8 000006DA 8100033A BALR 05EF 00000704 81005998 BALR 05F0 00000707 810059A2 LINK NAME=AIBTDLI ENTRY=(COBOL) 00000762 81000E10 LOAD NAME=CG#CTL ENTRY=80012CF0 00000988 810059B0 BALR 05F0 0000098B 810059BA LINK NAME=ASMTDLI ENTRY=(COBOL) 00001051 8100033A BALR 05EF 0000107B 81005998 BALR 05F0 0000107E 810059A2 LINK NAME=AIBTDLI ENTRY=(COBOL) 000012F7 810059B0 BALR 05F0 000012FA 810059BA LINK NAME=ASMTDLI ENTRY=(COBOL) 00001360 8100033A BALR 05EF 0000139C 81005998 BALR 05F0 0000139F 810059A2 LINK NAME=AIBTDLI ENTRY=(COBOL) 00001618 810059B0 BALR 05F0 0000161B 810059BA LINK NAME=ASMTDLI ENTRY=(COBOL) 00001CDC 8100033A BALR 05EF 00001D06 81005998 BALR 05F0 00001D09 810059A2 LINK NAME=AIBTDLI ENTRY=(COBOL) 00001F82 810059B0 BALR 05F0 00001F85 810059BA LINK NAME=ASMTDLI ENTRY=(COBOL) 00001F92 810003EA DELETE NAME=LDDECTBL ENTRY=00000000 00001FED 81007628 BALR 05EF 00001FEE 8100CE38 BALR 05F0 00001FF1 8100CE42 LINK NAME=AIBTDLI ENTRY=(COBOL) 00001FFB 81007686 LOAD NAME=LDDECTBL ENTRY=80011228 00002684 810077DA BALR 05EF 000026AE 8100CE38 BALR 05F0 000026B1 8100CE42 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000270C 810082B0 LOAD NAME=CG#CTL ENTRY=8100CE78 00002932 8100CE50 BALR 05F0 00002935 8100CE5A LINK NAME=ASMTDLI ENTRY=(COBOL) 00002FFB 810077DA BALR 05EF ......................................... ......................................... 0000B04A 81022160 BALR 05F0 0000B04D 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000B0AA 8101CAEA BALR 05EF 0000B0EF 81022148 BALR 05F0 0000B0F2 81022152 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000B114 81022160 BALR 05F0 0000B117 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000B174 8101CAEA BALR 05EF 0000B1B0 81022148 BALR 05F0 0000B1B3 81022152 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000B4A4 81022160 BALR 05F0 0000B4A7 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000B501 8101CAEA BALR 05EF 0000B519 81022160 BALR 05F0 0000B51C 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000BBE2 8101CAEA BALR 05EF 0000BC0C 81022148 BALR 05F0 0000BC0F 81022152 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000BE8D 81022160 BALR 05F0 0000BE90 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000BEED 8101CAEA BALR 05EF 0000BF32 81022148 BALR 05F0 0000BF35 81022152 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000BF51 81022160 BALR 05F0 0000BF54 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000BFB1 8101CAEA BALR 05EF 0000BFED 81022148 BALR 05F0 0000BFF0 81022152 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000C2E1 81022160 BALR 05F0 0000C2E4 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000C33E 8101CAEA BALR 05EF 0000C356 81022160 BALR 05F0 0000C359 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000C3BF 8101CAEA BALR 05EF 0000C3FB 81022148 BALR 05F0 0000C3FE 81022152 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000C67C 81022160 BALR 05F0 0000C67F 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000CD40 8101CAEA BALR 05EF 0000CD6A 81022148 BALR 05F0 0000CD6D 81022152 LINK NAME=AIBTDLI ENTRY=(COBOL) 0000CFEB 81022160 BALR 05F0 0000CFEE 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000CFFB 8101CB9A DELETE NAME=LDDECTBL ENTRY=00000000 GTF trace file DATE=000114 TIME=08514748
次に、上記のデフォルト・トレース例にある BALR (命令カウント CFEB) で開始するコードの最終セクションの詳細トレースの例を示します。オプション GTFOPT=ALL および GTFIMIN=0000CFEB は、このトレースを取得するために使用されました。
GTF option GTFFILE =D:\MFUSER\CONFIG\GTF.LOG GTF option GTFOPT =ALL GTF option GTFIMIN =0000CFEB GTF option GTFIMAX =FFFFFFFF GTF option GTFAMIN =00000000 GTF option GTFAMAX =FFFFFFFF GTF trace file DATE=000114 TIME=09370586 INS-CTR INS-ADDR INS-OP 0000CFEB 81022160 BALR 05F0 0000CFEC 81022162 ICM BF08F00D 0000CFED 81022166 LA 41F0F00E 0000CFEE 8102216A SVC 0A27 0000CFEE 8102216A LINK NAME=ASMTDLI ENTRY=(COBOL) 0000CFEF 8102216C BCR 07FE 0000CFF0 8101DBFA L 58D0D004 0000CFF1 8101DBFE L 58E0D00C 0000CFF2 8101DC02 BCR 07FE 0000CFF3 8101CAEC L 58E0B092 0000CFF4 8101CAF0 BCR 07FE 0000CFF5 8101C864 BAS 4DE0B3B4 0000CFF6 8101CB7A ST 50E0B092 0000CFF7 8101CB7E CLC D501300AB484 0000CFF8 8101CB84 BC 4770B40C 0000CFF9 8101CB88 L 5860B446 0000CFFA 8101CB8C BAL 4500B3D2 0000CFFB 8101CB98 SVC 0A09 0000CFFB 8101CB9A DELETE NAME=LDDECTBL ENTRY=00000000 0000CFFC 8101CB9A LTR 12FF 0000CFFD 8101CB9C BC 4770B412 0000CFFE 8101CBA0 L 5810B4B6 0000CFFF 8101CBA4 L 5890B4BE 0000D000 8101CBA8 L 5860B442 0000D001 8101CBAC LR 1809 0000D002 8101CBAE LH 48F0B3EE 0000D003 8101CBB2 BC 47000003 0000D004 8101CBB6 SVC 0A78 0000D004 8101CBB8 FREEMAIN LOC= 00010EC8 LEN= 00000359 0000D005 8101CBB8 LTR 12FF 0000D006 8101CBBA BC 4770B412 0000D007 8101CBBE L 5810B4D6 0000D008 8101CBC2 LH 48F0B4D2 0000D009 8101CBC6 LA 4120B49A 0000D00A 8101CBCA LH 4830B482 0000D00B 8101CBCE SR 1B55 0000D00C 8101CBD0 MVCL 0E24 0000D00D 8101CBD2 L 58E0B092 0000D00E 8101CBD6 BCR 07FE 0000D00F 8101C868 L 58D0B04E 0000D010 8101C86C ST 50FD0010 0000D011 8101C870 LM 98ECD00C 0000D012 8101C874 BCR 07FE 0000D013 80000860 SVC 0A00 GTF trace file DATE=000114 TIME=09375776
GTF option GTFFILE =GTF.LOG GTF option GTFOPT =ALL GTF option GTFIMIN =00000000 GTF option GTFIMAX =FFFFFFFF GTF option GTFAMIN =00000000 GTF option GTFAMAX =FFFFFFFF GTF trace file DATE=000114 TIME=10565281 INS-CTR INS-ADDR INS-OP 00000001 81007FE8 BALR 05C0 00000002 81007FEA LA 41100002 00000003 81007FEE AP FA10C00CC00E R0-R7 00000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 R9-RF 00000000 00000000 00000000 00000000 81007FEA 00002870 00000860 01007FE8 00000003 81007FF4 PGMCHK PSW=0000000781007FF4 GTF trace file DATE=000114 TIME=10565286