リアルタイム分析が行われると、SYSUDUMPやSYSABEND等のダンプ出力に代わりリアルタイム分析レポートが出力されます。このレポートを参照して、異常終了した箇所やレジスター及びメモリーの内容を把握します。
リアルタイム分析レポートはいくつかのセクションに分かれています。全てのセクションの内容を確認する必要はありません。デバッグに必要な情報が集められればよいのです。各セクションは、<H1>のタグで示されます。IDIREPRT DDステートメントに出力された分析レポート内の<H1>文字列をスキャンすれば、容易に各セクションに位置付けることができます。以下のサンプルを用いて、主なセクションの概要を説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
【ABENDS0C4の例】 06.54.20 JOB03208 $HASP373 Zxxxxx@A STARTED - INIT 1 - CLASS A - SYS S0W1 06.54.20 JOB03208 - -----TIMINGS (MINS.)------ -----PAGIN 06.54.20 JOB03208 -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP 06.54.20 JOB03208 -ASMACLG C 00 157 18 .00 .00 .0 24 BATCH 0 0 06.54.21 JOB03208 -ASMACLG L 00 50 7 .00 .00 .0 7 BATCH 0 0 06.54.22 JOB03208 +IDI0001I Fault Analyzer V14R1M21 (UI94052 2023/10/17) invoked by IDIXDCAP using VENDOR.PARMLIB(IDICN 06.54.23 JOB03208 +IDI0053I Fault history file entry suppressed due to: DUMMY history file specification 06.54.23 JOB03208 +IDI0002I Module GO, program MAINRTN, compiler listing file 058 058 Zxxxxx.ASMADATA(GO) statement # 105: Abend S0C4-X'4' (Protection 058 Exception) 06.54.25 JOB03208 IEA995I SYMPTOM DUMP OUTPUT 059 059 SYSTEM COMPLETION CODE=0C4 REASON CODE=00000004 059 TIME=06.54.21 SEQ=44058 CPU=0000 ASID=0031 059 PSW AT TIME OF ERROR 078D0000 80007B42 ILC 6 INTC 04 059 ACTIVE MODULE ADDRESS=00000000_00007A30 OFFSET=00000112 059 NAME=GO 059 DATA AT PSW 00007B3C - D7071000 100047F0 C0F65810 059 GR 0: 00000064 1: 00000000 059 2: 22222222 3: 33333333 059 4: 44444444 5: 55555555 059 6: 66666666 7: 77777777 059 8: 88888888 9: 99999999 059 A: AAAAAAAA B: BBBBBBBB 059 C: 80007A30 D: 80007A48 059 E: 00007000 F: 00000000 059 END OF SYMPTOM DUMP 06.54.25 JOB03208 IEF450I Zxxxxx@A G ASMACLG - ABEND=S0C4 U0000 REASON=00000004 06.54.25 JOB03208 -ASMACLG G *S0C4 557 66 .00 .00 .0 126 BATCH 0 0 06.54.25 JOB03208 -Zxxxxx@A ENDED. NAME-Zxxxxx TOTAL TCB CPU TIME= .00 TOTAL ELAPSED TIME= .0 06.54.25 JOB03208 $HASP395 Zxxxxx@A ENDED - ABEND=S0C4 【ABENDSD23の例】 06.54.41 JOB03209 $HASP373 Zxxxxx@A STARTED - INIT 1 - CLASS A - SYS S0W1 06.54.42 JOB03209 - -----TIMINGS (MINS.)------ -----PAGIN 06.54.42 JOB03209 -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP 06.54.42 JOB03209 -ASMACLG C 00 158 18 .00 .00 .0 27 BATCH 0 0 06.54.42 JOB03209 -ASMACLG L 00 50 6 .00 .00 .0 7 BATCH 0 0 06.54.43 JOB03209 +IDI0001I Fault Analyzer V14R1M21 (UI94052 2023/10/17) invoked by IDIXDCAP using VENDOR.PARMLIB(IDICN 06.54.45 JOB03209 +IDI0053I Fault history file entry suppressed due to: DUMMY history file specification 06.54.45 JOB03209 +IDI0002I Module CNZINLPA offset X'15328': Abend SD23-X'5010003' 06.54.46 JOB03209 IEA995I SYMPTOM DUMP OUTPUT 078 078 SYSTEM COMPLETION CODE=D23 REASON CODE=05010003 078 TIME=06.54.42 SEQ=44062 CPU=0000 ASID=0031 078 PSW AT TIME OF ERROR 070C1000 8414832A ILC 2 INTC 0D 078 NO ACTIVE MODULE FOUND 078 NAME=UNKNOWN 078 DATA AT PSW 04148324 - CB9C18F7 0A0DA7F4 00065810 078 GR 0: 00022807 1: 84D23000 078 2: 00022806 3: 0000010E 078 4: 00000000 5: 0000010E 078 6: 00000003 7: 05010003 078 8: 00000000 9: 00000003 078 A: 00000501 B: 7FF9DEA4 078 C: 04155968 D: 7FF9D228 078 E: 841482F4 F: 05010003 078 END OF SYMPTOM DUMP 06.54.46 JOB03209 IEF450I Zxxxxx@A G ASMACLG - ABEND=SD23 U0000 REASON=05010003 06.54.46 JOB03209 -ASMACLG G *SD23 726 93 .00 .00 .0 150 BATCH 0 0 06.54.46 JOB03209 -Zxxxxx@A ENDED. NAME-Zxxxxx TOTAL TCB CPU TIME= .00 TOTAL ELAPSED TIME= .0 06.54.46 JOB03209 $HASP395 Zxxxxx@A ENDED - ABEND=SD23 |
1つ目がプログラム内の命令でS0C4 ABENDした例、2つ目がプログラムが発行したWTOマクロがSD23でABENDした例です。
SYNOPSISセクション
SYNOPSISセクションには、異常終了に関する要約情報が出力されます(ABEND内容によっては出力されない項目もある)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
【ABENDS0C4の例】 <H1> S Y N O P S I S A system abend 0C4 reason code X'4' occurred in module GO CSECT MAINENTR at offset X'110'. A program-interruption code 0004 (Protection Exception) is associated with this abend and indicates that: An attempt to store into the range 0-511 or 4096-4607 with low-address protection enabled. The cause of the failure was module GO CSECT MAINENTR. The Assembler source code that immediately preceded the failure was: List Stmt # ------ 000105 XC 0(8,R1),0(R1) CLEAR TARGET AREA 【ABENDSD23の例】 <H1> S Y N O P S I S A system abend D23 reason code X'5010003' occurred in module CNZINLPA at offset X'15328'. The abend was caused by machine instruction 0A0D (ABEND). |
プログラム内でエラーを起こしている【ABENDS0C4の例】では、アセンブリー・リスト上のステートメント番号105のXC命令(モジュールGOのCSECT MAINENTRの+X’110’)が割込みコード4でプログラム割込みを起こしていることが示されています。エラーを起こした命令は自分のプログラム内ですからデバッグも単純です。
しかし、【ABENDSD23の例】ではエラーそのものを起こしているのはモジュールCNZINLPAの+X’15328’です。自分のプログラムではなくOSのモジュールです。こういう場合は、ABENDしたOSのモジュールに問題があるのではなく、OSのサービスを呼び出した自分のプログラムの呼び出し方に問題があります。OS側としては「サービスの呼び出し方が悪いからこれ以上処理出来ないのでABENDするよ」ということで異常終了しています。従って、プログラム側としてはどこでそのサービスを呼び出していたのか、どのようなパラメーターでサービスを呼び出したのかを追跡して行きます。
EVENT SUMMARYセクション
モジュール名、入口点名、エラーまたは割込みポイントを、ABENDに関連するイベント発生順に並べたリストです。
エラーポイントと割込みポイントは、アセンブリー・リスト上のステートメント番号やモジュールや入口点からの変位で示されます。プログラムが呼び出したMVSアセンブラー・サービス・ルーチン内でエラーが検知された場合などは、起因となったマクロや関連するマクロ内のSVC命令のアドレスで示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
【ABENDS0C4の例】 <H1> E V E N T S U M M A R Y The following events are presented in chronological order. Event Fail Module Program EP # Type Point Name Name Name Event Location (*) Description -- ------------ ----- -------- -------- -------- ------------------ -------------------------------------------- 1 Abend S0C4 ***** GO MAINRTN n/a S#105 P+10C From SYS24098.T065419.RA000.Zxxxxx@A.GOSET.H01 (*) One or more of the following abbreviations might appear in the "Event Location" column: F#n Source file number (refer to detailed event information for file identification) L#n Source file line number S#n Listing file statement number (refer to detailed event information for file identification) M+x Offset from start of load module P+x Offset from start of program E+x Offset from start of entry point 【ABENDSD23の例】 <H1> E V E N T S U M M A R Y The following events are presented in chronological order. Event Fail Module Program EP # Type Point Name Name Name Event Location (*) Description -- ------------ ----- -------- -------- -------- ------------------ -------------------------------------------- 1 SVC 35 GO MAINRTN n/a S#132 P+13E From SYS24098.T065441.RA000.Zxxxxx@A.GOSET.H01 2 Abend SD23 ***** CNZINLPA n/a n/a M+15328 From LPA (凡例は省略) |
プログラム内でエラーを起こしている【ABENDS0C4の例】では、ABENDに関連するイベントは1つしかありません。プログラム内で直接プログラム割込みを起こしているからです。
【ABENDSD23の例】ではABENDに関連するイベントは2つです。2つ目がABENDそのものが起きているOS側のモジュールにおけるイベントです。ここでもSYNOPSISセクション同様に、モジュールCNZINLPAの+X’15328’でABEND SD23していることがわかります。着目するのは1つ前の1つ目のイベントです。モジュールGOのCSECT MAINRTNの+X’13E’でSVC 35が実行されています。ここがOSのプログラミング・サービスを呼び出した箇所で、アセンブリー・リスト上のステートメント132の命令です。