trace

Purpose

Allows the user to trace program execution for debugging purposes.

Format

trace new;
trace new, mask;

Parameters

new:(scalar) new value for trace flag.
mask:(scalar) optional mask to allow leaving some bits of the trace flag unchanged.

Examples

trace 1+8;    // trace fn/proc calls/returns to standard
              // output
trace 2+8;    // trace line numbers to standard output
trace 1+2+8;  // trace line numbers and fn/proc calls/
              // returns to standard output
trace 1+16;   // trace fn/proc calls/returns to printer
trace 2+16;   // trace line numbers to printer
trace 1+2+16; // trace line numbers and fn/proc calls/
              // returns to printer

Remarks

The trace command has no effect unless you are running your program under GAUSS’s source level debugger. Setting the trace flag will not generate any debugging output during normal execution of a program.

The argument is converted to a binary integer with the following meanings:

bit decimal meaning
ones 1 trace calls/returns
twos 2 trace line numbers
fours 4 unused
eights 8 output to window
sixteens 16 output to print
thirty-twos 32 output to auxiliary output
sixty-fours 64 output to error log

You must set one or more of the output bits to get any output from trace. If you set trace to 2, you’ll be doing a line number trace of your program, but the output will not be displayed anywhere.

The trace output as a program executes will be as follows:

(+GRAD) calling function or procedure GRAD
(-GRAD) returning from GRAD
[47] executing line 47

Note that the line number trace will only produce output if the program was compiled with line number records.

To set a single bit use two arguments:

trace 16,16; turn on output to printer
trace 0,16; turn off output to printer

See also

Functions lineson()