![]() |
System Debug Reference Manual
> Chapter 5 System Debug Command Specifications Fx-LOGFx (format) |
|||||||||||||||||||||||
|
SyntaxFT path ft_options FV virtaddr path fv_optionsFT = format data structure with type information. FV = format data structure with data starting at sid.off. Parameters
Examples$nmdebug > symopen gradtyp.demoOpens 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 ; ENDDisplay 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 bytesDisplay 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" INTEGERDisplay 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) ExamplesThe 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 ENDThis 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 ExamplesWe 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" c79c0000Open 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 ENDFormat 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 ENDFormat 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 ); ENDFormat 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 ENDFormat the data for the cm_info record contained in the cm_global record. Note that we asked for a specific case invariant. Limitations, Restrictionsnone
|