View previous topic :: View next topic
|
Author |
Message |
cybertaurean
New User
Joined: 22 Dec 2008 Posts: 87 Location: US
|
|
|
|
Hi All,
Given below is a typical abend message -
+IDI0002I Module XXXXXXXX, program XXXXXXXX, offset X'EA4': Abend UXXXX (I believe this is the memory location that points to the section of code that was active. Is there concept like IP - Instruction Pointer, Frame Pointer, Stack Pointer etc. in mainframe?. Let me know if there is any documentation available on this. I am trying to relate it with Base in Windows which is usually 0X40000000).
In case we don't have the listing available for the code ABC, can I convert the offset to a location in the compiler listing, ABC.LST for the module (I can get the LST file from CHGMAN).
The abend UXXXX could happen at multiple locations in the module. This would help me know where it happened (I'm not sure about this statement since the X'EA4' shown would be the location where the abend routine got executed. This would not be sufficient to know from which part of the code and under what condition, the abend routine was called).
Bottomline, Is there any way to analyze in case there is no LISTING available for the module?.
Regards,
Sumesh |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8700 Location: Dubuque, Iowa, USA
|
|
|
|
You need to learn the concept of PSW (Program Status Word) and the fields within it. You also need to go to www.redbooks.ibm.com and find manual SG24-7110, z/OS Diagnostic Data Collection and Analysis and read this manual.
It may be possible to debug the program without a listing but the listing makes it much easier. |
|
Back to top |
|
|
cybertaurean
New User
Joined: 22 Dec 2008 Posts: 87 Location: US
|
|
|
|
Thanks a lot Robert!!!. I got the book. Will try to learn it . |
|
Back to top |
|
|
William Thompson
Global Moderator
Joined: 18 Nov 2006 Posts: 3156 Location: Tucson AZ
|
|
|
|
Robert Sample wrote: |
It may be possible to debug the program without a listing but the listing makes it much easier. |
A dump and just backtracking from the abend point can reveal the source of the bad data, BTDT...grin..... |
|
Back to top |
|
|
cybertaurean
New User
Joined: 22 Dec 2008 Posts: 87 Location: US
|
|
|
|
Hi William,
I didn't quite understand what you were trying to convey (guess I didn't catch the lighter side of it ). Could you let me know how it is possible to backtrack the flow ?
Prog A
if A
else
call abend_routine
if B
else
call abend_routine
if C
else
call abend_routine
.
.
.
abend_routine (could be an assembler piece as shown below) -
PRGDUMP CSECT
SAVE (14,12)
BALR 11,0
USING *,11
ABEND XXXX,DUMP
END
In the above module, if we don't have compiler listing, it would just show the offset in prog A where the PRGDUMP got called?.
Now, with the data above, how can we know where exactly the call came from (backtracking) without the listing available?
Regards,
Sumesh |
|
Back to top |
|
|
Kjeld
Active User
Joined: 15 Dec 2009 Posts: 365 Location: Denmark
|
|
|
|
In Sumesh's example, I will find it hard to do without a listing. You can do it by location the working storage data involved in the abended instruction.
But, if it is a programmed (intentional) abend, the programmer should have documented the condition and data that lead to the decision to abend the programme. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
Quote: |
In case we don't have the listing available for the code ABC, can I convert the offset to a location in the compiler listing, ABC.LST for the module (I can get the LST file from CHGMAN). |
just take a decision!
You have a listing or not ? |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
Quote: |
The abend UXXXX could happen at multiple locations in the module. |
a user abend should describe an abnormal situation,
irrelevant of where in the program the issue has been discovered
if the meaning is different depending on the location where the abend was issued,
then that' s a serious programming/logic mistake |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
If there are 3 different situations that could cause a user abend, there should be 3 different user abend values. . .
If there are 3 different situations that are permitted to cause the same user abend then there should be an additional working-storage entry that contains the information as to why the abend was caused. Before the ws entry that describes the abend, it helps to add an "eyecatcher" so that when looking at a dump, something "readable" is always there. |
|
Back to top |
|
|
cybertaurean
New User
Joined: 22 Dec 2008 Posts: 87 Location: US
|
|
|
|
Thanks everyone for the replies :-)
@enrico
The listing I referred to is the LST file that is interpreted through CHGMAN. I think this gets created even if you havent provided LIST in Compile Option (not sure).
What I meant by "no listing" is that, since the module was not compiled with LST option, I will not have a listing for the particular module when it abends.
@dick
that should ideally be the case to understand based on any indicator set according to the location from which the abend routine was called. Unfortunately, this is not the case for me.
However, say I had an code C that would be 1, 2 or 3 according to the location, how will I know what is in C if I dont have a listing for the module at all?.
Regards,
Sumesh |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
We are just wasting time here!
if a Compiler and Linkage editor listings are not available
the chances for a reasonable debugging are close to 0
review You organization practices in order to have the proper info available at all time.
Furthermore if compile and linkage editor listing are not available Your organization
might not pass any reasonable audit ( seen it, done it ) |
|
Back to top |
|
|
William Thompson
Global Moderator
Joined: 18 Nov 2006 Posts: 3156 Location: Tucson AZ
|
|
|
|
cybertaurean wrote: |
Prog A
if A
else
call abend_routine
if B
else
call abend_routine
if C
else
call abend_routine
.
.
.
abend_routine (could be an assembler piece as shown below) -
Code: |
PRGDUMP CSECT
SAVE (14,12)
BALR 11,0
USING *,11
ABEND XXXX,DUMP
END |
|
Based upon your example:
The CALL should be a BALR 14,15 so look at R14 for the call.
You may need to look at the savearea pointed to by R13 to get R14.
Look backwards in the dump until you find the CLC/CLI followed by a BNE to the CALL.
Look backwards to find where the CLC/CLI got the objects for the compare, one should point to the 88 value of A or B or C and the other should point to the actual WS data area of the unknown.
The 88 value should tell you which IF did the CALL and the WS data will tell you why it failed the compare. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
Quote: |
Unfortunately, this is not the case for me. |
Suggest this become the case. . . It is a matter of self-preservation
Quote: |
how will I know what is in C if I dont have a listing for the module at all?. |
If you have neither listing nor "eyecatcher", finding what is in "C" may be most difficult - if it is possible at all. . . |
|
Back to top |
|
|
cybertaurean
New User
Joined: 22 Dec 2008 Posts: 87 Location: US
|
|
|
|
Thanks everyone for the replies...
@enrico
The audit passed is the reason why the module is live. I guess we will have to reinstall using LIST option .
@william
I got a long way to go to reach your expertise . Guess, I will have to study assemblers now. However, is that enough?. Will I have to learn the architecture, addressing etc. besides learning assembler?
@dick
I had a walkthrough of the code and found that I am not completely lost here. I happened to find two values ABEND-PARAGRAPH and ABEND-STATUS. I located the BLW's for these fields and searched the hex-dump in Fault Analyzer and VOILA!!! I got the values. The abend was due to a missing segment (will analyze further to find the reason why this segment was not present;that's another story).
Bottomline is that I'm quite happy that I decided to stretch a bit and subsequently learned more.
Regards,
Sumesh |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Good to hear you found the problem
Quote: |
I happened to find two values ABEND-PARAGRAPH and ABEND-STATUS. |
Yup, a paragraph-name should certainly "catch the eye"
Thank you for posting what you found,
d |
|
Back to top |
|
|
|