Product Site

2.29.5.  The Format of Trace Output

Every clause traced appears with automatic formatting (indentation) according to its logical depth of nesting, for example. Results, if requested, are indented by two extra spaces and are enclosed in double quotation marks so that leading and trailing whitespace characters are apparent. Any control codes in the data encoding (ASCII values less than '20'x, except tab '09'x, line-feed '0a'x, and carriage-return '0d'x, are replaced by a question mark to avoid screen interference. Results other than strings appear in the string representation obtained by sending them a STRING message. The line number in the program precedes the traced clause. All lines displayed during tracing have a three-character prefix to identify the type of data being traced. These can be:
*-*

Identifies the source of a single clause, that is, the data actually in the program.
+++

Identifies a trace message. This can be the nonzero return code from a command, the prompt message when interactive debugging is entered, an indication of a syntax error when in interactive debugging.
>I>

Identifies an entry to (invocation of) a routine or method. This trace entry will appear if tracing is enabled using the ::OPTIONS directive using TRACE A, TRACE R, TRACE I or TRACE L. In addition it will appear if the TRACE A, TRACE R, TRACE I or TRACE L keyword instruction is the first statement in a routine or in a method (if the first instruction in a method is an EXPOSE keyword instruction then it must be immediately followed by a TRACE A, TRACE R, TRACE I or TRACE L keyword instruction in order to display this output).
<I<    

Identifies an exit (return) from an invocation of a routine or method. This trace entry will appear if tracing with TRACE A, TRACE R, TRACE I or TRACE L is in effect.
>K>

Identifies the result of a subkeyword value in a keyword instruction, like the TO subkeyword of a DO or LOOP instruction, or the DIGITS subkeyword in a NUMERIC instruction.
>>>

Identifies the result of an expression (for TRACE R) or the value returned from a subroutine call, or a value evaluated by execution of a DO loop.
>=>

Identifies a variable assignment or a message assignment result. The trace message includes both the name of the assignment target and the assigned value. Assignment trace lines are displayed by assignment instructions, variable assigned via PARSE, ARG, PULL, or USE ARG, as well as control variable updates for DO and LOOP instructions.
>.>

Identifies the value assigned to a placeholder during parsing (see Section 9.1.2, “The Period as a Placeholder”).

The following prefixes are used only if TRACE Intermediates is in effect:
>A>

Identifies a value used as a function, subroutine, or message argument.
>C>

The data traced is the original name of the compound variable and the name of a compound variable, after the name has been replaced by the value of the variable but before the variable is used. If no value was assigned to the variable, the trace shows the variable in uppercase characters.
>E>

The data traced is the name and value of an environment symbol.
>F>

The data traced is the name and result of a function call.
>L>

The data traced is a literal (string, uninitialized variable, or constant symbol).
>M>

The data traced is the name and result of an object message.
>N>

The data traced is the name and result of a namespace-qualified symbol.
>O>

The data traced is the name and result of an operation on two terms.
>P>

The data traced is the name and result of a prefix operation.
>R>

The data traced is the name of an argument variable and the name of the referenced variable.
>V>

The data traced is the name and contents of a variable.

Note

The characters => indicate the value of a variable or the result of an operation.

The characters <= indicate a value assignment. The name to the left of the marker is the assignment topic. The data to the right of the marker is the assigned value.

The character ? could indicate a non-printable character in the output.

If no option is specified on a TRACE instruction, or if the result of evaluating the expression is null, the default tracing actions are restored. The defaults are TRACE N and interactive debugging (?) off.

Following a syntax error that SIGNAL ON SYNTAX does not trap, the clause in error is always traced.