View previous topic :: View next topic |
Author |
Message |
mainframemouli Beginner
Joined: 23 Feb 2005 Posts: 87 Topics: 33
|
Posted: Fri Sep 23, 2005 8:50 am Post subject: Analysisng the value in a variable in CEEDUMP |
|
|
Before expalainig the problem let me clear the following things.
1. I have the idea of the way to solve SOC7 abend , by HEXLOC and getting the Nearest OFFSET.
2. My shop is having the ABEND-AID also , so i can get the Formatted way of error description.
My problem is not regarding solving of SOC7 but regarding the way to analyse the CEEDUMP.
But I don't know how to check the CEEDUMP.
I got the SOC7 Abend
Heres the sysout information for it.
The system detected a data exception (System Completion Code=0C7).
From compile unit XSRTPGM at entry point XSRTPGM at compile unit offset +00000878 at entry offset +00000878
at address 20400DF8.
with the Entry offset i captured the CEEDUMP information as follows
Program Unit: XSRTPGM Entry: XSRTPGM Statement: Offset: +00000878 - OFFSET
Machine State:
ILC..... 0006 Interruption Code..... 0007
PSW..... 478D1000 A0400DFE
GPR0..... 00000001 GPR1..... 20678E00 GPR2..... 2066A0B8 GPR3.....
GPR4..... 20666280 GPR5..... 20678E00 GPR6..... 00000000 GPR7.....
GPR8..... 00016A80 GPR9..... 20666100 GPR10.... 20400688 GPR11....
GPR12.... 2040067C GPR13.... 00029030 GPR14.... 8004E8F0 GPR15....
Storage dump near condition, beginning at location: 20400DE8
+000000 20400DE8 FA10D110 A0DDF321 2030D110 96F02032 FA202000 A0DDF82
20666280
00000000
20400988
20678E00
20002000 D507209E |..J...3...J.o0........8.....N...|
How to proceed from here , i want the variable which caused the problem and its last stored value.
I have searched this Forum for all the details regarding this , and checked the links given by Kolusu and some others also....
can anyone please guide me in this... |
|
Back to top |
|
|
Cogito-Ergo-Sum Advanced
Joined: 15 Dec 2002 Posts: 637 Topics: 43 Location: Bengaluru, INDIA
|
Posted: Fri Sep 23, 2005 9:09 am Post subject: |
|
|
All you really need from CEEDUMP (or, anything else) is the abending offset. Pick it and search in your COBOL program compile listing (you would have compiled your program with LIST,NOOFFSET compile options). That will get you the problematic instruction and then the problematic statement.
PSW stands for Program Status Word that is the address of the next sequential instruction to be executed. The ILC stands fro Instruction Length Code. X'A0400DFE' - 6 = X'A0400DF8' which is the offending instruction. The storage dump shown begins with 20400DE8 whereas the PSW begins with A. You can ignore the high order bit as your program would have been running in 24-bit mode.
If you count 8 bytes from 20400DE8, you would be at X'FA202000 A0DD' The FA is instruction for Add Packed. This means, you had a S0C7 when you were adding two packed decimal numbers. _________________ ALL opinions are welcome.
Debugging tip:
When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
-- Sherlock Holmes. |
|
Back to top |
|
|
SureshKumar Intermediate
Joined: 23 Jan 2003 Posts: 211 Topics: 21
|
Posted: Fri Sep 23, 2005 10:06 am Post subject: |
|
|
mainframemouli,
Go to the following link. It may not solve your problem but gives a clear picture on dump handling. It deals more with CICS but the concept is the same. Thanks
http://cics.ufl.edu/trandump.html#data |
|
Back to top |
|
|
mainframemouli Beginner
Joined: 23 Feb 2005 Posts: 87 Topics: 33
|
Posted: Mon Sep 26, 2005 8:34 am Post subject: |
|
|
Quote: | If you count 8 bytes from 20400DE8, you would be at X'FA202000 A0DD' The FA is instruction for Add Packed |
How you arrived at this Cogito-Ergo-Sum , can you explain about that...
and suresh kumar , my cobol listing doesn't have this assembler statement as like the below , is their any compiler option i need to give for that.
MVC 544(23,13),1074(10) TS2=40 PGMLIT AT +946
000C1E 4140 D220 LA 4,544(0,13) TS2=40
000C22 5040 D210 ST 4,528(0,13) TS2=24
000C26 4140 23A2 LA 4,930(0,2) WS-RECEIVE-AREA
000C2A 5040 D214 ST 4,532(0,13) TS2=28
PP 5688-197 IBM COBOL for MVS & VM 1.2.2 DCNESW00 Date 08/15/2000 Time 12:47:56 Page 42
000C2E 4140 2044 LA 4,68(0,2) WS-RECEIVE-LENGTH
000C32 5040 D218 ST 4,536(0,13) TS2=32 |
|
Back to top |
|
|
kolusu Site Admin
Joined: 26 Nov 2002 Posts: 12375 Topics: 75 Location: San Jose
|
Posted: Mon Sep 26, 2005 8:41 am Post subject: |
|
|
mainframemouli,
Cogito-ergo-sum has already mentioned about the compiler options.
Quote: |
(you would have compiled your program with LIST,NOOFFSET compile options).
|
Basically you need to add this line before ID divison and compile the pgm which will give you the assembler listing of the pgm.
Hope this helps...
Cheers
Kolusu _________________ Kolusu
www.linkedin.com/in/kolusu |
|
Back to top |
|
|
ANIL SARATHY Beginner
Joined: 30 Aug 2005 Posts: 88 Topics: 3 Location: Syracuse,New york
|
Posted: Tue Sep 27, 2005 12:04 am Post subject: |
|
|
LIST and OFFSET compiler options are mutually exclusive.
If u specify List , other will be Noffset and vice versa. If you use both, LIST will be ignored.
LIST is used to produce listing of the assembler language expansion of your code. With OFFSET, the procedure portion of the listing will contain line numbers, statement references, and the location of the first instruction generated for each statement.
In general OFFSET is used as it generate less lines or data in compiler listing.
But for abend analysis , always go with LIST , as it will give expansion.
Things to do :
1)If the sysout doesn't show offset , then u have to calculate it using
Offset= PSW - EPA
Program Status Word and Entry Point Address can be found in CEEDUMP
2) find offset from sysout
3) Give find on "HEXLOC" in compiler listing
4) Find for the VERB whose HEXLOC is equal to the offset you got in sysout and note the LINE #.
or
If there is no VERB which is having same offset, then find the verb with the next larger offset and go back one verb.
5) find on line # . Now you are on abended line. _________________ Anil Sarathy |
|
Back to top |
|
|
mainframemouli Beginner
Joined: 23 Feb 2005 Posts: 87 Topics: 33
|
Posted: Tue Sep 27, 2005 1:43 am Post subject: |
|
|
Anil,
As i told earlier I know the process of giving HEXLOC and getting the VERB , the problem is not with solving the SOC7. I Know the verb where it get the abend....
But about the CEEDUMP analysis..... |
|
Back to top |
|
|
ANIL SARATHY Beginner
Joined: 30 Aug 2005 Posts: 88 Topics: 3 Location: Syracuse,New york
|
Posted: Tue Sep 27, 2005 1:53 am Post subject: |
|
|
"its last stored value".
i don't think u can find the value in the variable which has caused the abend , by looking at the abend _________________ Anil Sarathy |
|
Back to top |
|
|
rony&ruby Beginner
Joined: 27 May 2005 Posts: 12 Topics: 1 Location: China
|
Posted: Sun Oct 02, 2005 9:47 am Post subject: |
|
|
why not use FDUMP option in your compiling.
After SC07, sysout will tell you which statement in CBL list cause data error. _________________ Ron Yang |
|
Back to top |
|
|
vak255 Intermediate
Joined: 10 Sep 2004 Posts: 384 Topics: 79
|
Posted: Thu Jul 05, 2007 12:51 pm Post subject: |
|
|
I handle PL/1 programs.
Is the above procedure applies to PL/1 programs too. |
|
Back to top |
|
|
|
|