Debugging with GT.M

From VistApedia
Revision as of 02:23, 24 March 2005 by 68.171.114.173 (talk)
Jump to: navigation, search

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