View previous topic :: View next topic
|
Author |
Message |
John Poulakos
Active User
Joined: 13 Jun 2012 Posts: 178 Location: United States
|
|
|
|
I am trying to determine if Fault Analyzer will display Access Registers (AR) and data space memory. If doesn't seem to be able to display data space memory even when the fault occurs because of bad data in the data space. For example, a S0C7 due to bad packed data in the data space.
Is this a limitation of FA or of the type of dump taken? |
|
Back to top |
|
|
Ed Goodman
Active Member
Joined: 08 Jun 2011 Posts: 556 Location: USA
|
|
|
|
I know that FA shows the working storage and linkage fields here. Even if there is no sysdebug file, it gives you the storage in a formatted hex display.
Not sure about the registers...I see general registers, but don't really know what (AR) means.
Take a look near the very bottom of the report. There should be a list of report options like:
Detail(Medium)
NoErrorHandler
Language(ENU)
NoLocale
MaxMiniDumpPages(4096) - not exceeded
NoDup(CICSfast(5),NoIncludeExecCicsDump) - not a duplicate
NoDup(ImageFast(5)) - not a duplicate
NoDup(Normal(0),NoJobname) - not enabled
NoPermitLangx
PreferredFormattingWidth(80)
The values for these are in the manual (when you have about two hours for reading). You can play with those if you want. To rerun a dump from an existing fault, use the 'b' line command. It will build some JCL for you to reprint the existing dump with different options. (It's the IDIDA program) |
|
Back to top |
|
|
John Poulakos
Active User
Joined: 13 Jun 2012 Posts: 178 Location: United States
|
|
|
|
I appreciate your response, but so far it's not looking good. I think real-time analysis will chase addresses outside of the failing address space, but not sure if it will access dataspace storage. There are no options for displaying access registers that I have found. I have asked several people at IBM who support FA and they don't know either. |
|
Back to top |
|
|
Ed Goodman
Active Member
Joined: 08 Jun 2011 Posts: 556 Location: USA
|
|
|
|
Can you dumb it down a little for me? What is it you are trying to see? I'm not familiar with the terms 'access dataspace' and 'access registers.' |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
Ed,
John is referring to "Access Registers", which contain the address of data found in "Dataspaces". If I'm not mistaken, a single Access Register can address up to 2G, making it an ideal method to store data.
In order to gain access to Access Register data, the program must be in "Access Space Control", also known as "AR" mode.
This LINK will go over some of this -
pic.dhe.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.ieaa600%2Ffqar.htm
Incidentally, we're speaking Assembler here.
HTH.... |
|
Back to top |
|
|
John Poulakos
Active User
Joined: 13 Jun 2012 Posts: 178 Location: United States
|
|
|
|
What an application programmer sees is his "sandbox". The memory you see is what's in your address space, the registers you see are those in your storage key state. However, there are many dataspaces on a modern mainframe. Each started task controls a dataspace and may permit it's storage to be used by programs running in batch, online or other dataspaces. Each stored procedure invoked by Work Load manager creates a storage space; very difficult to get to because they are dynamically allocated.
Access registers control the storage you address depending on the storage protect key you are operating under. For example, if I am in supervisor state, the 16 registers I see will not be the same as those I would see if I was in user state, because they would be looking a different storage pools. This might help a little: publib.boulder.ibm.com/infocenter/zos/basics/index.jsp?topic=/com.ibm.zos.zconcepts/zconcepts_95.htm
Much of the software I'm responsible for is controlled by our own started tasks and may run in protect key 0 or 6 (supervisor state). CICS uses multiple storage protect keys and we need to know which state they are in when they communicate with us. Consequently, being able to see storage in dataspaces and access registers is a big deal for debugging, for us.
My current task (for the last year or more) has been to provide better performance, diagnostic, debugging and monitoring facilities than we had before. So, I ask a lot of questions that might not make a lot of sense to a lot of people. |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
John,
I asked one of the MVS Sysprogs in my shop about "Access Registers" displayed in IFA and he said he's seen them before (occasionally) but for the most part, no.
And yes, KEY 0 for Batch, but I'd be a somewhat leery of KEY 0 in CICS.
FWIW, I've never used Access Registers in a CICS/Assembler program.
I'm willing to bet that XDC, from Cole Software, can give you what you're looking for and more. Unfortunately, it's not cheap. But for Assembler de-bugging, it's the best.
www.colesoft.com/colesoft-products/about-zxdc/
That's about all I can offer.... |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
As Mr. O'Boyle says, an "access register" is used to address data in a data space. Setting up a data space is just a bit difficult. To get the full functioning you do need to be in key 0 supervisor, but problem key/ problem state programs can use it, though I've never seen it done. I've seen hints that some programmers use the access registers for temporary storage, which can be done by anyone. Mr. O'Boyle is incorrect in one aspect: the access register just indicates the data space, not any particular address in the data space.
Each general purpose register has a corresponding access register. If your program is in access register mode (e.g., your program has issued a SAC 512 instruction) AND your program is using a general purpose register to access storage AND the corresponding access register is non-zero the machine will use the data space. If the data space is linked to a VSAM linear data set, the paging supervisor will fetch the corresponding page from the LDS, but much slower than it would fetch the page from a page data set. Your program must tell the system to update the LDS if it has changed the page, which may be a weakness in the scheme; it is not done automagically. In other words, if a data space is linked to an LDS, your program should regard it as sort of a BDAM data set with 4K records.
By the way, a program in AMODE 24 can only use a 16 meg data space.
IPCS can access a data space provided it is part of the dump, which must be done very carefully; it is not usually there. |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
Steve,
I did indicate that the access register pointed to data in a dataspace -
Quote: |
John is referring to "Access Registers", which contain the address of data found in "Dataspaces". |
Perhaps I should have said the address of data which had been previously loaded into the Dataspace? But, I believe he knew what I meant.
Semantics.... |
|
Back to top |
|
|
John Poulakos
Active User
Joined: 13 Jun 2012 Posts: 178 Location: United States
|
|
|
|
Ed asked for a "dumbed down" explanation; perhaps I went too far in that direction. But, I'm aware of what you gentlemen meant.
We already use XDC, which works fine for interactive debugging; although not the easiest tool to use. My exploration of FA is due to it being cheaper and it would be nice to do re-analysis of client dumps. Getting a plain dump from a client can be a real pain in the ass, especially CICS and CE dumps.
With respect to FA, I believe I may be able to get at dataspace storage while doing real-time analysis, but I haven't been able to prove that one way or another. It doesn't help with client dumps, anyway.
I have installed FA, APA, and much of the OmegaMon suite. I am currently installing Colesoft Z/XPF and will work on IPCS after that. The main objective is to get a better way to identify and resolve client issues. A secondary objective is to get better versed in the tools our clients use. |
|
Back to top |
|
|
Ed Goodman
Active Member
Joined: 08 Jun 2011 Posts: 556 Location: USA
|
|
|
|
"Ed asked for a "dumbed down" explanation; perhaps I went too far in that direction."
Ouch.
Did you ever see the movie "As Good as it Gets?" There is a line right after Jack tells Helen that "you make me want to be a better man." When she tells him is the nicest thing anyone has ever said to her, he completely ruins it by saying "Maybe I overshot a little." To me, this has always been the best line in the whole movie. |
|
Back to top |
|
|
John Poulakos
Active User
Joined: 13 Jun 2012 Posts: 178 Location: United States
|
|
|
|
Sorry Ed, no offense meant. Some of the crap I work with is very esoteric and I never know how deep to get into it. I saw the movie and definitely overshot! |
|
Back to top |
|
|
|