Page Numbers: Yes First Page: 23 X: 527 Y: 10.5"
Margins: Binding: 13
Odd Heading: Not-on-first-page
Output Conventions
Even Heading:
Output Conventions
Section 6: Output Conventions
A "?" in any variable display uniformly means that the value is out of range. Elipses (". . .") indicate that there are additional fields present in a record which cannot be displayed due to lack of symbol table information. This can happen either in OVERLAID records or because a defs file is not present on the disk. In display stack mode, variables declared in nested blocks are now shown indented according to their nesting level.
The debugger uses information about the types of variables to decide on an appropriate output format. Listed below are the built-in types which the debugger distinguishes and the convention used to display instances of each type.
ARRAY
displays all the elements of an array; e.g., a = (3)[[x: 0, y:0], [x: 1, y: 1], [x: 3, y:3]]. The parenthesized value to the right of the "=" is the length of the array.Typing ↑DEL will abort the display of long arrays.
ARRAY DESCRIPTOR
displays the descriptor followed by the contents of the array; e.g., a = DESCRIPTOR[146013B↑,3](3)[[x: 0, y:0], [x: 1, y: 1], [x: 3, y:3]]. For a RELATIVE ARRAY DESCRIPTOR, the word RELATIVE is displayed first. Typing ↑DEL will abort the display of long array descriptors.
BOOLEAN
displays TRUE or FALSE. Since BOOLEAN is an enumerated type = {FALSE, TRUE}, values outside this range are indicated by a ? (probably an uninitialized variable).
CHARACTER
displays a printing character (c) as ’c. A control character (X) other than BLANK, RUBOUT, NUL, TAB, LF, FF, CR, or ESC is displayed as ↑X. Values greater than 177B are displayed in octal.
CONDITION
displays a record containing an UNSPECIFIED and a timeout; a CARDINAL.
ENUMERATED
displays the identifier constant used in the enumerated type declaration. For example, an instance c of the type ChannelState: TYPE = {disconnected, busy, available} is displayed as c=busy.
EXPORTED TYPES
displays the name of the type followed by an octal display of the contents if the length of the type is known. For example, an instance of the type Handle: TYPE [2] is displayed as Handle (2) 1 1234B.
INTEGER
always displays a decimal number. Uniformly, numeric output is decimal unless terminated by "B" (octal).
LONG
numbers are displayed following the same conventions as short numbers, i.e., LONG CARDINAL and LONG UNSPECIFIED are displayed in octal, LONG INTEGER in decimal.
MDSZone
displays a POINTER.
MONITORLOCK
displays a record containing an UNSPECIFIED.
POINTER
displays an octal number, terminated with an "↑", i.e., p=107362B↑. RELATIVE POINTERs are decimal and are terminated with "↑R", i.e., r=123↑R.
PORT
displays two octal numbers, i.e., p = PORT [0, 172520B].
PROCEDURE, SIGNAL, ERROR
displays the name of the procedure (with its local frame) and the name of the program module in which it resides (with its global frame), e.g., GetMyChar, L: 165064B (in CollectParams, G: 166514B).
PROCESS
displays a ProcessHandle (pointer to a ProcessStateBlock), i.e., p = PROCESS [2002B]. See the process section of the Mesa System Documentation for further details.
REAL
displays a floating point number, e.g., -1.45.
RECORD
displays a bracketed list of each field name and its value. For example, an instance v of the record Vector: RECORD [x,y: INTEGER] is displayed as v=[x: 9, y: -1].
SEQUENCE
displays as an array. For example, an instance s of the record Sequence: RECORD [length: UnsignedInt, text: PACKED SEQUENCE maxLength: UnsignedInt OF CHARACTER] is displayed as s=[length: 3, text: (3)[’a, ’b, ’c]].
STRING
displays the name of the string, followed by its current length, its maximum length, and the string body, e.g., s=(3,10)"foo". If the string is NIL, s=NIL is displayed. Typing ↑DEL will abort the display of long strings.
Listed below is the convention used to display context information throughout the debugger.
ProcedureName, L: nnnnnB, PC: nnnB (in ModuleName, G: nnnnnB) --local frame
A local context is displayed as the procedure name with its local frame, followed by the module name and its global frame.
ModuleName, G: nnnnnB --global frame
A global context is displayed as the module name and its global frame. If the global frame is followed by *, i.e., nnnnnB*, it is a copy created by the NEW construct. If the global frame has not yet started, it will be followed by a ~.
In response to an expression followed by a ?, the interpeter will show:
Octal = Hexadecimal = Unsigned Decimal = Signed Decimal =
Byte,,Byte = Octal Byte,,Octal Byte = CHAR,,CHAR =
Nibble:Nibble,,Nibble:Nibble
If any of the values are 0 or out of range, they will not be shown. For LONG values the interpreter will show:
Octal = Hexadecimal = Decimal = OctalWord OctalWord =
Byte,,Byte Byte,,Byte
For example, in response to 61141B? the debugger displays
61141B = 6261X = 25185 = 98,,97 = 142B,,141B = ’b,,’a = 6:2,,6:1
and for 1234567B? it shows
1234567B = 53977X = 342391 = 34567B 5 = 57,,119 0,,5