Thanks for making my point better than I did in the original post, Chris.
The bottom line is if you want to know the name of the calling program, pass
it rather than discover it.

The use of "redirection technology" provides numerous benefits to the
sophisticated user.  Primarily in support of debugging shared code and in
filtering unwanted executors of dynamically hooked common system code.
Without it all executions of the code by any task in the system is affected
by the debugging triggers or the hook mechanism.  With it, executions of the
code can be filtered so only the desired task(s) act upon the debugging or
hooking machinery.  For example with a dynamic hook, if you don't use
redirection technology and the wrong task executed the hook code you either
have to hook the wrong task or abort the hook request entirely leaving the
desired task unhooked.  Overall redirection technology is a very good thing
to have available to you.

Chuck Arney
Arney Computer Systems
zosdebug.com



-----Original Message-----
From: IBM Mainframe Assembler List [mailto:[email protected]]
On Behalf Of Chris Craddock
Sent: Monday, July 08, 2013 5:16 PM
To: [email protected]
Subject: Re: Xpediter debugger tool Vs. CSVQUERY Macro

(Agreeing with Dave Cole)

Beyond that, the whole idea that you can rationally "know" the identity of
the calling program is pretty naive. Load modules are composed of multiple
sections, any of which might call any other piece of code anywhere anytime.
Throw multiple modules in being called from multiple RBs in multiple tasks
and it ought to become obvious that there's just no way to know reliably -
and nor should you.

Making implicit assumptions about your caller creates code dependencies that
will remain undocumented, waiting to bite the unwary. And perfectly innocent
new code can/will break at o'dark. If you want to do something special based
on "who", then make it an explicit parameter, document the interface and
then use it.

CC

Date: Mon, 8 Jul 2013 11:57:10 -0400
From: [email protected]
Subject: Re: Xpediter debugger tool  Vs.  CSVQUERY Macro
To: [email protected]



Your expectation
needs a change.  When running under a debugger you should

expect that the return point could be to the debugger's code rather than

your own code.  I don't know anything about Xpediter or the techniques that

it employs, but this would apply to most debuggers including ours.
If your

code needs to know the name of your program that called it, the only

accurate way would be to pass it rather than try and discover it.

I just want to point out that this issue does not arise when using z/XDC.
As much as possible, z/XDC changes your program's execution environment as
little as possible. In particular, it does not use "redirection technology"
for anything at all.


IHTH,

Dave
Cole
REPLY TO:
[email protected]

ColeSoft Marketing     WEB PAGE:
colesoft.com

736 Fox Hollow Road    DESK:
540-456-8536

Afton, VA 22920
CELL:     540-456-6518










At 5/30/2013 10:48 AM, Chuck Arney wrote:

If you are using the return
address (R14) in your code to determine the name

of the calling module, I believe it could frequently be something you did

not expect when your code is running under a debugger.  Debuggers often use

redirection technology of one sort or another to maintain control over the

code being debugged.  It is a required part of the job.


Your expectation needs a change.  When running under a debugger you should

expect that the return point could be to the debugger's code rather than

your own code.  I don't know anything about Xpediter or the techniques that

it employs, but this would apply to most debuggers including ours.
If your

code needs to know the name of your program that called it, the only

accurate way would be to pass it rather than try and discover it.


Chuck Arney

Arney Computer Systems

zosdebug.com









-----Original Message-----

From: IBM Mainframe Assembler
List
[
mailto:[email protected]]

On Behalf Of Alexandre Franke

Sent: Wednesday, May 29, 2013 10:31 PM

To: [email protected]

Subject: Xpediter debugger tool Vs. CSVQUERY Macro


Hello ! We have an assembler subroutine that invokes CSVQUERY macro in order

to get its caller program name, but when running it under Xpediter, it

doesn't work. It seems the addresses CSVQUERY look for are messed up...

Does anyone know how CSVQUERY results could be changed when testing under

Xpediter debugging session? Thank you, Alexandre
Franke

Reply via email to