Fx (format) [ System Debug Reference Manual ] MPE/iX 5.0 Documentation
System Debug Reference Manual
Fx (format)
Formats a specified data structure.
Syntax
FT path ft_options
FV virtaddr path fv_options
FT = format data structure with type information.
FV = format data structure with data starting at sid.off.
Parameters
virtaddr FV only. The virtual address of the data to be
formatted. Virtaddr can be a short pointer, a long
pointer, or a full logical code pointer.
path A path specification, as described in chapter 5,
"Symbolic Formatting/Symbolic Access".
ft_options These options are for the FT command only. The MAP
option causes a location map to be printed for
components of complex structures such as records or
arrays.
MAP Include a location map.
NOMAP Do not include a location map
(default).
fv_options These options are for the FV command only.
PAC Print packed array of chars as a string
of characters.
NOPAC Print packed array of chars as an array
index followed by the element value.
PAB Print packed array of boolean as a bit
string.
NOPAB Print packed array of boolean as an
array index followed by the element
value.
ARCH For selected MPE/XL architect types,
print the data in the "expected"
fashion.
NOARCH Do no special formatting for MPE/XL
architected types.
If no options are given, the default set is:
PAC PAB ARCH
The known types given special treatment with the ARCH
option are:
VA_TYPE
SHORT_VA_TYPE
CONVERT_PTR_TYPE
Examples
$nmdebug > symopen gradtyp.demo
Opens the symbolic data type file gradtyp.demo. It is assumed that the
Debug variable addr contains the address of a StudentRecord data
structure in virtual memory. The following code fragment is from this
file:
CONST MINGRADES = 1; MAXGRADES = 10;
MINSTUDENTS = 1; MAXSTUDENTS = 5;
TYPE
GradeRange = MINGRADES . . MAXGRADES;
GradesArray = ARRAY [ GradeRange ] OF integer;
Class = ( SENIOR, JUNIOR, SOPHOMORE, FRESHMAN );
NameStr = string[8];
StudentRecord = RECORD
Name : NameStr;
Id : integer;
Year : Class;
NumGrades : GradeRange;
Grades : GradesArray;
END;
FT (Format Type) Examples
$nmdebug > FT "StudentRecord"
RECORD
NAME : NAMESTR ;
ID : INTEGER ;
YEAR : CLASS ;
NUMGRADES: GRADERANGE ;
GRADES : GRADESARRAY ;
END
Display the structure of StudentRecord.
$nmdebug > FT "StudentRecord" MAP
RECORD
NAME : NAMESTR ; ( 0.0 @ 10.0 )
ID : INTEGER ; ( 10.0 @ 4.0 )
YEAR : CLASS ; ( 14.0 @ 1.0 )
NUMGRADES: GRADERANGE ; ( 15.0 @ 1.0 )
GRADES : GRADESARRAY ; ( 18.0 @ 28.0 )
END ;
RECORD Size: 40 bytes
Display the structure of StudentRecord and print a component map.
$nmdebug > FT "StudentRecord.grades"
ARRAY [ GRADERANGE ] OF INTEGER
$nmdebug > FT "graderange"
1 .. 10
$nmdebug > FT "maxgrades"
INTEGER
Display various types. Notice that structure name is not limited to a
simple type or constant name; rather, it may consist of any composite
structure name.
FV (Format Virtual) Examples
The following examples assume that debug variable data contains the
virtual address of a data structure corresponding to the type
StudentArray.
Before looking at FV examples, let's take a look at the data for student
number 1 the "old fashioned way" (with the DV command):
$nmdebug > dv data,10
$ VIRT 7b8.40200010 $ 00000004 42696c6c 00000000 00000000
$ VIRT 7b8.40200020 $ 00000001 00040000 0000002d 00000041
$ VIRT 7b8.40200030 $ 0000004e 00000042 00000000 00000000
$ VIRT 7b8.40200040 $ 00000000 00000000 00000000 00000000
$nmdebug > dv data,6,a
$ VIRT 7b8.40200010 A .... Bill .... .... .... ....
This is what the first few words of the StudentArray data looks like in
virtual memory.
$nmdebug > fv data "StudentRecord"
RECORD
NAME : 'Bill'
ID : 1
YEAR : SENIOR
NUMGRADES : 4
GRADES :
[ 1 ]: 2d
[ 2 ]: 41
[ 3 ]: 4e
[ 4 ]: 42
[ 5 ]: 0
[ 6 ]: 0
[ 7 ]: 0
[ 8 ]: 0
[ 9 ]: 0
[ a ]: 0
END
This is what the first element of the StudentArray data looks like when
formatted as if it were a StudentRecord.
$nmdebug > fv data "StudentRecord.Name"
'Bill'
$nmdebug > fv data "StudentRecord.Year"
SENIOR
$nmdebug > fv data "StudentRecord.Grades[3]"
4e
MPE XL Operating System Examples
We can also look at individual items of a data structure as the above
examples depict.
$nmdebug > symopen symos.pub.sys
$nmdebug > fv pib(pin) "pib_type.cm_global"
c79c0000
Open the operating system symbolic file. Format the data in the
cm_global field of the PIB for the current PIN. It is a short pointer.
$nmdebug > fv pib(pin) "pib_type.cm_global^"
PACKED RECORD
CM_DP0 : 0
CM_DP_SCRATCH : c0105d40
CM_INFO :
CM_INFO_INT : c
CM_CTRL :
CM_CTRL_INT : 0
CM_STACK_DST : ac
CM_DB_DST : ac
CM_DB_3K_OFFSET : 200
CM_DB_SID : 7d4
CM_DB_OFFSET : 400110b0
CM_DL : CONVERT_PTR_TYPE( 7d4.40011000 )
CM_S : CONVERT_PTR_TYPE( 7d4.400110be )
CM_Z : CONVERT_PTR_TYPE( 7d4.40015ed0 )
CM_STACK_BASE : CONVERT_PTR_TYPE( 7d4.40010cb0 )
CM_STACK_LIMIT : CONVERT_PTR_TYPE( 7d4.40020fff )
CM_CST : 80000700
CM_CSTX : 0
CM_LSTT : CONVERT_PTR_TYPE( 0.0 )
CM_NRPGMSEGS : 0
CM_DST : 81400000
CM_BANK0 : 80000000
CM_BANK0_SIZE : 10000
CM_DEBUG : 0
CM_MCODE_ADR : 484228
CM_RESVD6 : 0
CM_RESVD5 : 0
CM_RESVD4 : 0
CM_RESVD3 : 0
CM_RESVD2 : 0
CM_RESVD1 : 0
END
Format the data in the cm_global field of the PIB for the current PIN.
That is, format what the pointer points to.
$nmdebug > fv pib(pin) "pib_type.cm_global^.cm_info"
CRUNCHED RECORD
CM_INFO_INT : c
END
Format the data in the cm_info record of the cm_global record.
$nmdebug > ft "pib_type.cm_global^.cm_info"
CRUNCHED RECORD
CASE BOOLEAN OF
TRUE: ( CM_INFO_INT: SEM_LOCK_TYPE );
FALSE: ( SPLITSTACK : BIT1 ;
SINGLE_STEP: BIT1 ;
CNTRL_Y : BIT1 ;
SCRATCH1 : BIT5 );
END
Format the type for the acm_info record contained in the cm_global
record. We see that the record has an invariant case structure. By
default, the formatter takes the first invariant structure found.
$nmdebug > fv pib(pin) "pib_type.cm_global^.cm_info,false"
CRUNCHED RECORD
SPLITSTACK : 0
SINGLE_STEP : 0
CNTRL_Y : 0
SCRATCH1 : c
END
Format the data for the cm_info record contained in the cm_global record.
Note that we asked for a specific case invariant.
Limitations, Restrictions
none
CAUTION The output format of all System Debug commands is subject to
change without notice. Programs that are developed to
postprocess System Debug output should not depend on the exact
format (spacing, alignment, number of lines, uppercase or
lowercase, or spelling) of any System Debug command output.
MPE/iX 5.0 Documentation