Hi Paul,

The comments by James Lampert are correct, but it is tedious to use the standard OPM debugger (using the MI instruction numbers to set breakpoints). You can also, as is coded in your program, use the BRK pseudo-op to set breakpoints, which the debugger recognixes. It's okay for short programs.

I also have an MI debugger which works in a way similar to the ILE debugger. That is, it has a similar interface; of course, it's a front-end to the standard STRDBG command. It lets you debug an MI program at the source level, set breakpoints with F6, use the EV command to display variables (including dotted variables), etc.

It has a few weaknesses, one of which is that I did not write it to recognize RELATIVE branch points (in the single-step debug mode). That is, an instruction like CMPBLA CHAR-FIELD-ONE, CHAR-FIELD-TWO / EQ (=+2); would confuse it. It recognizes labels as branch points, as well as normal subroutine call/return operations (CALLI). This should not be a problem with the F6 key; just if you want to do single-step debugging (the branch point would not be recognized). Anyway, I thought about enhancing it to do more robust parsing, but as you know, there's not too much demand for MI tools these days! It's a fun thing to play with though.

Regards

Rich

----- Original Message ----- From: "James Lampert" <jamesl@xxxxxxxxxxxxxxxxx>
To: "MI Programming on the AS400 / iSeries" <mi400@xxxxxxxxxxxx>
Sent: Tuesday, May 13, 2008 1:40 PM
Subject: Re: [MI400] MI program unable to locate job - need assistance


Paul Jackson wrote:
Hi Richard,

this was code that I obtained from Tim McCarthy when he was at Trailblazer
systems ca. 1996. I've never debugged an MI program before. Any tips on
how to do this?

To begin with, you need a compilation listing. Debugging is through the
OPM debugger, by hexadecimal instruction number; all variables can be
accessed through DSPPGMVAR unless their names start with periods.

When setting breakpoints, use the instruction number (I don't have a
compilation listing in front of me, but I believe it's the second
column, the one that shows an ascending sequence of hexadecimal
numbers). For example, if the instruction of interest is at instruction
number 002D, then you would set your breakpoint at '/002D' (including
the slash and the single quotes, to tell the debugger that you want an
instruction number rather than a HLL statement number).

--
James H. H. Lampert
Touchtone Corporation

_______________________________________________
This is the MI Programming on the AS400 / iSeries (MI400) mailing list
To post a message email: MI400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/mi400
or email: MI400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/mi400.




This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2020 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].