EVENT DETAILSセクション
SUMMARYセクションで示されたABENDに関連するイベントの詳細情報が出力されます。セクション内ではイベントに対応して<H2>見出しで示され、イベントに関連するソース・コード、データ領域、機械命令コード、PSWと汎用レジスターなどが出力されます(出力項目はイベント内容に応じて変わる)。また、関連する記憶域内容があれば<H3> Associated Storage Areas見出しで出力されます。
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
【ABENDS0C4の例】 <H1> E V E N T D E T A I L S : <H2> EVENT 1 OF 1: ABEND S0C4 : : Assembler Source Code: List Stmt # ------ -5 * * * -4 * * * -3 * *----------------------------------* -2 ABNDS0C4_04 DS 0H -1 L R1,DWORD LOAD TARGET AREA ADDRESS 000105 XC 0(8,R1),0(R1) CLEAR TARGET AREA +1 B EXITPROC PROCESSING DONE +2 ABNDS0C4_11 DS 0H +3 L R1,=A(SUB2DATA) LOAD SUB2RTN DATA AREA ADDRESS +4 MVC 0(256,R1),WORKAREA MOVE DATA TO SUB2RTN AREA +5 B EXITPROC PROCESSING DONE : : Machine Instruction . . . . : D70710001000 XC 0(8,R1),0(R1) At Address. . . . . . . . : 00007B3C (CSECT MAINRTN offset X'10C') AMODE . . . . . . . . . . : 31 Failing Operand . . . . . : First operand (Store protected) First Operand Address . . : 00000000 (2048 bytes of storage addressable) First Operand Length. . . : 8 First Operand Storage . . : 000A0000 000130E1 *........* Second Operand Address. . : 00000000 (2048 bytes of storage addressable) Second Operand Length . . : 8 Second Operand Storage. . : 000A0000 000130E1 *........* Program Status Word (PSW) . : 078D0000 80007B42 PSW Summary . . . . . . . : Primary Space Mode, PSW Key 8, AMODE 31, Problem State Breaking Event Address Register (BEAR) . . . . . . : 00007ACC (Module GO CSECT MAINRTN + X'9C') General Purpose Registers: R0: 0_00000064 (1948 bytes of storage addressable) R1: 0_00000000 (2048 bytes of storage addressable) R2: 0_22222222 (Storage invalid) R3: 0_33333333 (Storage invalid) R4: 0_44444444 (Storage invalid) R5: 0_55555555 (Storage invalid) R6: 0_66666666 (Storage invalid) R7: 0_77777777 (Storage invalid) R8: 0_88888888 (Module IDIDA + X'4C4888') R9: 0_99999999 (19510887 bytes of storage addressable) R10: 0_AAAAAAAA (Storage invalid) R11: 0_BBBBBBBB (Storage invalid) R12: 0_80007A30 (Module GO CSECT MAINRTN + X'0') R13: 0_80007A48 (Module GO CSECT MAINRTN + X'18', statement # 26) R14: 0_00007000 (4096 bytes of storage addressable) R15: 0_00000000 (2048 bytes of storage addressable) : : 【ABENDSD23の例】 <H1> E V E N T D E T A I L S : <H2> EVENT 1 OF 2: SUPERVISOR CALL (SVC 35) : : Assembler Source Code: List Stmt # ------ -5 * * * -4 * * * -3 * *----------------------------------* -2 ABNDSD23 DS 0H -1 WTO TEXT=(6), INFORM MESSAGE TO CONSOLE + 000120 MF=(E,WTOPARM) 000121 + SYSSTATE TEST @MXA 000122 + IHBINNRR WTOPARM SET UP PARAMETER LIST ADDRESS @MXC 000123 + SYSSTATE TEST TEST ASC ENVIRONMENT @L1A 000124 + LA 1,WTOPARM LOAD PARAMETER REG 1 000125 + ST 6,4(0,1) STORE TEXT ADDR INTO PLIST @L5A 000126 + LR 14,1 FIRST BYTE OF PARM LIST @L2A 000127 + SR 15,15 CLEAR REGISTER 15 @L2A 000128 + AH 15,0(1,0) ADD LENGTH OF TEXT + 4 @L2A 000129 + AR 14,15 FIRST BYTE AFTER TEXT @L2A 000130 + OI 4(14),B'00000000' UPDATE EXTENDED MCS FLAGS @L2A 000131 + OI 5(14),B'10000000' UPDATE EXTENDED MCS FLAGS2 @L5A 000132 + SVC 35 ISSUE SVC 35 @L6A +1 B EXITPROC PROCESSING DONE +2 * *----------------------------------* +3 * * CAUSES AN ABEND S102 * +4 * * ============================== * +5 * * * : : Machine Instruction . . . . : 0A23 SVC 35 (WTO WTOR) At Address. . . . . . . . : 00007B6E (CSECT MAINRTN offset X'13E') AMODE . . . . . . . . . . : 31 Program Status Word (PSW) . : 078D1000 80007B70 PSW Summary . . . . . . . : Primary Space Mode, PSW Key 8, AMODE 31, Problem State General Purpose Registers: R0: 0_00000064 (1948 bytes of storage addressable) R1: 0_00007D3C (Module GO CSECT MAINRTN + X'30C', statement # 216) R2: 0_22222222 (Storage invalid) R3: 0_33333333 (Storage invalid) R4: 0_44444444 (Storage invalid) R5: 0_55555555 (Storage invalid) R6: 0_66666666 (Storage invalid) R7: 0_77777777 (Storage invalid) R8: 0_88888888 (Module IDIDA + X'4C4888') R9: 0_99999999 (19510887 bytes of storage addressable) R10: 0_AAAAAAAA (Storage invalid) R11: 0_BBBBBBBB (Storage invalid) R12: 0_80007A30 (Module GO CSECT MAINRTN + X'0') R13: 0_80007A48 (Module GO CSECT MAINRTN + X'18', statement # 26) R14: 0_00007D44 (Module GO CSECT MAINRTN + X'314', statement # 222) R15: 0_00000008 (2040 bytes of storage addressable) : : |
EVENT DETAILSでABEND関連イベントのより詳細な具体的な問題判別情報を参照することができます。プログラム内でエラーを起こしている【ABENDS0C4の例】では、イベントは1つしかないので見るところも「<H2> EVENT 1 OF 1: ABEND S0C4」の部分だけです。「Assembler Source Code:」の部分に、エラーを起こした命令と前後5命令のソースコードが出ています。エラーになった命令はSYNOPSISセクションで判明していますが、EVENT DETAILSでは前後の命令も含まれるのでロジックの流れも確認できます。加えて、エラー起こした命令の機械コードとオペランド・アドレスや内容、PSW内容及び汎用レジスターの内容も出力されています。何故そのようなエラーを起こしたのかを追求するには、命令を実行した際の汎用レジスターと記憶域内容の確認は必須です。レジスターやメモリーの内容は正しいのか?意図した通りなのか?、そうでなければ何故そうなってしまっているのか?どこで誤った値を設定しているのかといった事などをエラー起こした命令から遡って調べて行きます。
【ABENDSD23の例】ではABENDに関連するイベントは2つですが、着目すべきは1つ目の「<H2> EVENT 1 OF 2: SUPERVISOR CALL (SVC 35)」の部分です。エラーにされたSVC命令は「Assembler Source Code:」の部分、アセンブリー・リストの120行目にあるWTOマクロの中で展開されています。エラーはこのWTOマクロの延長で起きたことがわかります。WTOマクロのパラメーターとしてTEXT=(6)とMF=(E,WTOPARM)が指定されていますが、レジスター6番とWTOPARM領域のアドレスや内容が正しいかを確認します。
最初のSYNOPSISセクションには、ABENDコードSD23に加え理由コードX’5010003’が示されています。システム・コード(ABENDコード)のマニュアルでこの理由コードの意味と対処を調べます(*1)。マニュアルには、理由コードの下位バイトx0003は「呼び出し側が渡したパラメーター・リストは、呼び出し側がアクセスできるストレージに置かれていない」ということが記されています。従って、レジスター6番が示すメッセージ・テキスト領域かWTOPARM領域のどちらかが誤っていることがわかります。
WTOマクロの展開内容を見ると、SVC 35命令を出す前にWTOPARM領域のアドレスをレジスター1に入れた後に、いくつかの命令でWTOPARM領域をアクセスしています。アクセス出来ていたのですからWTOPARM領域のアドレスは正しかったと考えられます。「General Purpose Registers:」の部分に出ている、レジスター1について見てみると、16進のアドレス値と共に (Module GO CSECT MAINRTN + X’30C’, statement # 216) という説明が出ています。アセンブリー・リスト上のステートメント番号216で定義されたプログラム内の領域なので、WTOPARM領域のアドレスには問題が無いことがわかります。そうなれば残りはレジスター6番だけです。レジスター6については、16進の値と共に (Storage invalid) の説明が出ています。ABEND SD23になった原因は、レジスター6番に格納したメッセージ・テキスト領域のアドレスが誤っていたからであることがわかります。この後は、何故レジスター6にそのような誤ったアドレス値を設定してしまっているのかをプログラム・コードを読んで調べて行きます。ここまで来ればダンプをどのように見ればよいのかではなく、プログラム・ロジックの調査です。
*1 分析リストの後方、「<H2> EVENT 2 OF 2: ABEND SD23」の「<H3> Abend Code SD23-X’5010003′ Explanation」にも英文でのABENDコードと理由コードの解説が出ている。
EVENT DETAILSセクションでは、エラーイベントに関連する変数や定数領域の内容は「<H3> Associated Storage Areas」として出力されます。命令が参照している記憶域の位置や内容がソース・コードのように参照できます。
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 |
<H3> Associated Storage Areas CSECT Storage Offset Hex Value Data Value Source ------ ----------------------------------- ------------------ ---------------------------------------------------------- MAINRTN at Address (R12) 00007A30: D0 00000080 *.... * +IHB0003L DC A(128) LENGTH D4 00 *. * +IHB0003F DC BL1'00000000' Flag 1A0 00000000 00000000 *........ * DBLWORK DC D'0' DOUBLE WORD WORKA 1A8 00000000 00000000 *........ * DWORD DC D'0' X0000000000000000 1B0 00003039 *.... * FWORD1 DC F'12345' X00003039 1B4 FFFC95 *..n * FWORD2 DC FL3'-875' XFFFC95 1B8 1A85 *.e * HWORD1 DC H'6789' X1A85 1BA FF85 *.e * HWORD2 DC H'-123' XFF85 1BC C1 *A * CHAR1 DC C'A' 'A' 1BD C1C2C3C4 C5C6C7C8 4040 *ABCDEFGH * CHAR2 DC CL10'ABCDEFGH' 'ABCDEFGH ' 1C7 E7E8E7E8 E7E8 *XYXYXY * CHAR3 DC 3CL2'XY' 'XYXYXY' 1CD F1F2F3F4 F5404040 *12345 * CHAR4 DC CL8'12345' '12345 ' 1D5 00 *. * HEX1 DC X'00' X00 1D6 00000123 *.... * HEX2 DC XL4'123' X00000123 1DA 12345C *..* * PACK1 DC P'12345' X12345C 1DD 00003456 789C *...... * PACK2 DC PL6'+3456789' X00003456789C 1E3 875D *g) * PACK3 DC P'-875' X875D 1E5 00875D *.g) * PACK4 DC PL3'-875' X00875D 1E8 F0F0F0F1 F2F3F4C5 *0001234E * ZONE1 DC ZL8'12345' ' 1234E' 1F0 00007AA4 *..:u * ADDR1 DC A(MAINPROC) X00000XXX 1F4 007BEC *.#. * ADDR2 DC AL3(CHAR1) X000XXX 1F7 00000000 00000000 00000000 00000000 *................* WORKAREA DS XL256 --- 256BYTES WORK Lines 207-2E7 same as above 2F7 0012 *.. * MSGAREA DC AL2(L'MSGTEXT) TEST MESSAGE LENG 2F9 E3C5E2E3 40D4C5E2 E2C1C7C5 40E3C5E7 *TEST MESSAGE TEX* MSGTEXT DC C'TEST MESSAGE TEXT.' TEST MESSAGE TEXT 309 E34B *T. * |
「<H3> Associated Storage Areas」に「See “System-Wide Information” – “Storage Areas” – “Hex-Dumped Storage” for unformatted storage areas related to this event.」と出ていることがあります。その場合は、次の「<H1> S Y S T E M – W I D E I N F O R M A T I O N」セクションの「<H2> STORAGE AREAS」を参照します。記憶域内容が特定のイベントに関連付けられなかった場合などは、「<H2> STORAGE AREAS」の部分に汎用レジスターの内容に基づいた記憶域ダンプが出力されます。
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 63 64 65 66 67 68 69 |
S Y S T E M - W I D E I N F O R M A T I O N : : ================================================================================ STORAGE AREAS -------------------------------------------------------------------------------- Hex-Dumped Storage Address Offset Hex EBCDIC -------- --------- ----------------------------------- ------------------ Event 2 Module CNZINLPA GPR 6 (Address 00000003) Event 2 Module CNZINLPA GPR 9 (Address 00000003) 00000003 00 000130E1 * ..... * Event 1 CSECT MAINRTN GPR 15 (Address 00000008) 00000008 00000000 00000000 * ........* 00000010 +8 00FD65F8 00000000 7FFFF000 7FFFF000 *...8....".0.".0.* 00000020 +18 7FFFF000 7FFFF000 7FFFF000 7FFFF000 *".0.".0.".0.".0.* 00000030 +28 00000000 00000000 7FFFF000 7FFFF000 *........".0.".0.* 00000040 +38 00000000 00000000 00000000 00FD65F8 *...............8* 00000050 +48 00000000 00000000 000A0000 000140E1 *.............. .* 00000060 +58 000A0000 *.... * Event 1 CSECT MAINRTN GPR 0 (Address 00000064) 00000064 000150E1 000A0000 000160E1 * ..&.......-.* 00000070 +C 000A0000 000170E1 000A0000 000180E1 *................* 00000080 +1C 00000000 00001005 0002005C 00020016 *...........*....* 00000090 +2C 00000001 00000000 00000000 00000000 *................* 000000A0 +3C 00000001 00000000 00000000 7F505400 *............"&..* 000000B0 +4C 00000000 00000000 0001004F 0265E790 *...........|..X.* 000000C0 +5C 28000000 00000000 FBEBFFFB FEFFFF7C *...............@* 000000D0 +6C 07FCE000 00000000 77003B98 04800000 *..\........q....* 000000E0 +7C EC000000 00000000 00000000 00000000 *................* 000000F0 +8C 00000000 00000000 00000000 00000000 *................* 00000100 +9C 00000000 00000000 00000000 0000 *.............. * Event 2 Module CNZINLPA GPR 3 (Address 0000010E) Event 2 Module CNZINLPA GPR 5 (Address 0000010E) 0000010E 0000 * ..* 00000110 +2 00000000 1B3033DA 00000000 00000000 *................* 00000120 +12 00000000 00000000 00000000 00000000 *................* 00000130 +22 07850400 80000000 00000000 0675148C *.e..............* 00000140 +32 07041000 80000000 00000000 1B305C64 *..............*.* 00000150 +42 04040000 80000000 00000000 016A6E3A *.............コ>.* 00000160 +52 07060000 00000000 00000000 00000000 *................* 00000170 +62 07060000 00000000 00000000 00000000 *................* 00000180 +72 00000000 00000000 00000000 00000000 *................* 00000190 +82 00000000 00000000 00000000 00000000 *................* 000001A0 +92 04040000 80000000 00000000 0169C3A8 *..............Cy* 000001B0 +A2 04040000 80000000 00000000 011A5018 *..............&.* 000001C0 +B2 04040000 80000000 00000000 019A1700 *................* 000001D0 +C2 00000000 80000000 00000000 7FD0E078 *............"}\.* 000001E0 +D2 00000000 80000000 00000000 7FD100C0 *............"J.{* 000001F0 +E2 04040000 80000000 00000000 015EB300 *.............;..* 00000200 +F2 D7E2C140 00044004 02149118 7D17E118 *PSA .. ...j.'...* 00000210 +102 020B0000 7D0D9000 007C27C0 007C27C0 *....'....@.{.@.{* 00000220 +112 00FD7100 00F54100 00000000 00000000 *.....5..........* 00000230 +122 00000000 00000000 00000000 0000005C *...............** 00000240 +132 0C000000 00000000 00000081 7F541260 *...........a"..-* : : : 05010FE0 +FDD 58520000 50506018 58A0D2BC 58FA0000 *....&&-...K.....* 05010FF0 +FED 50F0600C 5830D2D8 50306010 58F0D2D4 *&0-...KQ&.-..0KM* 05011000 +FFD 50F060 *&0- * Event 2 Module CNZINLPA GPR 13 (Address 7FF9D228) Address range 7FF9D228-7FF9DEA3 invalid Event 2 Module CNZINLPA GPR 11 (Address 7FF9DEA4) Address range 7FF9DEA4-7FF9DFFF invalid Address range 7FF9E000-7FF9EEA3 not in minidump |
たいていのケースであれば、最初の「SYNOPSISセクション」からここ迄の「EVENT DETAILSセクション」のレポート内容で異常終了を引き起こした命令の場所やエラーの理由はわかるでしょう。しかしながら、Fault Analyzerであれ自らのダンプ解析であれ、機械的に答えが出るのはここ迄です。デバッグに於いて重要なのはここから先に行うことになる、プログラム・ロジック、アプリケーション論理の解読や追跡に関してはプログラマー自らが行うことになります。