Debugging with GT.M
From VistApedia
Simple 'IDE' with GT.M
This is a simple (pre pre alpha) IDE created with GT.M debugging commands:
It will currently show the source code, with the current line highlighted, as it steps through the code.
Here are the modules TMGIDE.m TMGTERM.m TMGTPSTP.m
To invoke:
do ^TMGIDE
K. Toppenberg
GT.M Debugging commands
This information is from the GT.M Programmer's Manual. I'll just summarize a few points.
- $ECODE
This is a list of past errors, separated by commas. Subsequent errors are added to the end of the list. Example: GTM>w $ECODE ,M6,Z150373850, Errors beginning with: "M" are standard errors "U" are user errors "Z" are GT.M errors
- $ZSTATUS
This is detail about the most recent error. Example: GTM>w $ZSTATUS 150373850,SubName+3^MyFunct,%GTM-E-UNDEF, Undefined local variable: Jxack
- $ZMESSAGE(x)
This will give a text message for a given error number. Example: To get details about the error number, 150373850, given above... GTM>w $ZMESSAGE(150373850) %GTM-E-UNDEF, Undefined local variable: !AD
- ZPRINT x (e.g. ZPRINT SubName+3^MyFunct)
This will display the line that cause the program exception. The 'x' may be obtained from $ZSTATUS, or from $ZPOS (see below)
- $ZPOSITION (OR $ZPOS)
Shows the current position of the current line of execution (or the last line exececuted in case of an error)
- ZWRITE
Shows the entire variable table, displaying all defined variables.
- ZBREAK address
Toggles a break point at address It is possible to have the breakpoint execute code, and then resume. See manual.
- ZSTEP x
Will execute the program one line at a time. I think this would be typically used after a ZBREAK drops command back to GT.M> prompt. ZSTEP INTO -- start execution at current execution point, and stops at next line (even if that line is in a subroutine). ZSTEP [OVER] -- start execution at current exec. point, and stop at the next line at the same level on the invocation stack. ZSTEP OUTOF -- ??
- ZCONTINUE
Continue execution from break point.
- $STACK AND $ZLEVEL
$STACK starts at 0 and each DO inc's the value, each QUIT dec's it $ZLEVEL is $STACK+1
.. More later