One item that has eluded me in my continuing quest to dive deeply into z Systems architecture is finding a native (IBM-supplied) assembler debugger/disassembler** on the platform that is fully functional, user-friendly and versatile.
Quickly I gave up on user-friendly and versatile and settled on trying to find one that was fully functional; simply stated – can execute and sustain integrity through any command in the POP manual. Of the 4 debuggers on the system, or as part of an add-on package, all have major out-of-the box ‘features’ that prevent them from being a worthwhile tool to anyone who has used a modern debugger (Like Immunity, Olly, or even GNU’s gdb).*
For this platform, my criteria for fully functional was this:
- Be able to debug programs which are link-edited APF-authorized and live in APF authorized libraries.
- Debug programs that switch into and out of supervisor state, and also switch PSW key mask values.
- Allow execution of commands that switch address space control (ASC) modes and manipulate storage in any of the 3 modes.
- Do the rest of the actions a basic debugger would do: set breakpoints, single step, watch variables / registers, examine and change memory, and so on.
The first 3 are functions unique to the z/Architecture platform, and I would expect at least the 3 z/OS based debuggers to handle (and possibly the one OMVS/USS based one also). None do. At least out of the box. A quick list of the debuggers tried, and their limitations is at the end of this post.