[Binyamin Dissen] The problem I have with XDC is that its method of trapping (an 0C1):

1. Requires environment changes to support its ESTAE and the normal ESTAE logic doesn't seem to work well - TEST works better in that regard

2. Does not support locked environments (neither does TEST)

3. Provide consistent data in a multiprogramming environment, where other threads may be changing data that caused the trap (neither does TEST)

It probably is a quite adequate tool for other environments when the application code does not have ESTAE's that sometimes retry).

I am all for Full Screen / Source Level debuggers - but no product out there really does the job well enough (IMHO). It could be done via CP (under VM) but I don't see the great return over the effort. One of there days I will probably get around to writing a CP command with the full functionality of indirect addressing of the TEST LIST command (cannot figure out how to do

        L 1R?+8?+C?

via the D command).

I have no problem at all with dump formatters as they do not have any of the
drawbacks above.






In his post, Mr. Dissen raises several objections to z/XDC that are either factually wrong or that raise the concern that z/XDC does not reliably display accurate information. I need to respond.






1. [XDC] Requires environment changes to support its ESTAE [...]

Sometimes true. Sometimes not. z/XDC itself is, of course, an ESTAE (or an ESTAEX or an ARR or an FRR. It's up to you and your needs.) So the presence of z/XDC itself inevitably an environmental change.

However, that "environmental change" benefits the debugging process rather than aggravates it.

Sometimes, it is appropriate for a customer to modify his own ESTAE routine so that it will call z/XDC; however, that is not necessary. z/XDC provides simple methods that can be used to activate a debugging environment at pretty much any point of a target program's processing, regardless of whether it is main code, exit routines, PC routines, authorized routines, SRB routines, whatever.






[...] and the normal ESTAE logic doesn't seem to work well

What does this mean? It is a random accusation given without a shred of supporting evidence.

"Doesn't seem to work well"? I dunno. I guess the interaction of multiple recovery routines in an environment can seem confusing. However, those interactions occur according to a very small handful of simple rules, and so with only a little thought they can be understood. It doesn't take long to figure it all out.

If there is something about the z/XDC's logic that "doesn't seem to work well", let me know specifically what it is. I'll fix it.






 - TEST works better in that regard

TEST uses SVC 91 for its breakpoints. (Currently, z/XDC uses 0C1s.) Consequently, TEST cannot be used in PC routines, in HASN<>PASN environments, in FRR protected environments, in locked environments, in SRB routines, generally in any of the many environments in which IBM defines that SVCs are prohibited. z/XDC can be used interactively in all of those environments.






2. [XDC] Does not support locked environments (neither does TEST)

Purists have trouble with compromises. It's a shame. Because then they miss out on their benefits.

If you are willing to accept certain inevitable compromises, z/XDC can be used to debug most programs that hold locks. Admittedly, you had better do so on a sandbox system since there will be some locked programs that cannot be debugged safely (or that cannot be debugged at all) with XDC.

But if the limitations and dangers are understood, then z/XDC can be a valuable tool for debugging most locked code.






3. [XDC does not] Provide consistent data in a multiprogramming environment, where other threads may be changing data that caused the trap (neither does TEST)

Again, this is a purist's issue. Yes, certainly scenarios can be conjured up that are problematic, but in almost all real world situations, the "consistency of data" issues being alluded to here do not interfere with the debugging process.

I have many customers that use z/XDC with great effectiveness in highly multitasking environments, dozens of tasks, some persistent, others effervescent. In most of these situations, the programmer actually would not even want other tasks to be frozen.






It [z/XDC] probably is a quite adequate tool for other environments when the application code does not have ESTAE's that sometimes retry).

Yes, z/XDC is at least that.

But for myself and my customers (a fairly large number these days), the presence of ESTAEs and their recovery routine is in no way a hindrance to z/XDC's use. In fact, z/XDC is a great tool for debugging, not just a program's main code, but also its ESTAEs, its ESTAEXs, its ARRs, its FRRs *and* their recovery routines.






About Dumps:

Sure, dumps do a great job of providing comprehensive snapshots of a single instant in time. And, sure, a lot of effective debugging can be done by a programmer who is highly skilled in analysis, who is highly experienced with the program he is debugging and who is highly experienced with the system environments within which that program is running.

It is perhaps ironic, but it turns out that I have to look at dumps quite frequently, because when a customer has a problem that I cannot recreate at home, and the customer cannot provide a way for me to connect into his system, then he has to send me a dump, and I have to look at it.

But in any case, the troubles with dumps are:

(1) It may take a decade or more to acquire the experience to read them effectively.

(2) As storage sizes grow, they are becoming more and more unmanageably huge.

(3) The moment of the dump, especially the "harder" ones (of which there are plenty), often will be taken thousands or even millions of instructions away from the initial cause of the failure, long after intervening code may have corrupted the information necessary to find the true problem.

(4) The visual presentation of a dump to the user is utterly abysmal! (Yes, IPCS has loads of good structural formatters, but sooner or later, you're going to wind up having to mentally decode raw hex-EBCDIC.)

(5) Stepping through a program (an essential feature of all interactive debuggers) is simply not possible with dumps. (but that's on my to-do list ...) To accomplish the equivalent of "setting a breakpoint" requires either setting a SLIP trap or setting an 0C1 bomb and then rerunning the program and taking another 100 megabyte dump. (Ok, maybe not always 100 megabytes.) The turnaround time from one snapshot to the next is immense!






I have no problem at all with dump formatters as they do not have any of the drawbacks above.

Actually, point (3) above is a "consistency of data" issue, not unlike the ones Mr. Dissen raise regarding z/XDC.





Dave Cole              REPLY TO: [EMAIL PROTECTED]
Cole Software          WEB PAGE: http://www.xdc.com
736 Fox Hollow Road    VOICE:    540-456-8536
Afton, VA 22920        FAX:      540-456-6658

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to