If the symbol or key is already defined, SDA replaces the old definition with the new one. Symbols and keys remain defined until you exit from SDA.
#1
SDA> DEFINE/KEY PF1 "SHOW STACK" SDA> [PF1] SHOW STACK [RETURN] Process stacks (on CPU 00) ------------------------- Current operating stack (KERNEL):
#2The DEFINE/KEY command defines PF1 as the SHOW STACK command. When the PF1 key is pressed, SDA displays the command and waits for you to press the Return key.
SDA> DEFINE/KEY/TERMINATE PF1 "SHOW STACK" SDA> [PF1] SHOW STACK Process stacks (on CPU 00) ------------------------- Current operating stack (KERNEL): 00000000.7FF95D00 00000000.0000000B 00000000.7FF95D08 FFFFFFFF.804395C8 MMG$TBI_DATA_64+000B8 00000000.7FF95D10 00000000.00000000 00000000.7FF95D18 0000FE00.00007E04 SP => 00000000.7FF95D20 00000000.00000800 IRP$M_EXTEND 00000000.7FF95D28 00000001.000002F7 UCB$B_PI_FKB+0000B 00000000.7FF95D30 FFFFFFFF.804395C8 MMG$TBI_DATA_64+000B8 00000000.7FF95D38 00000002.00000000 . . .
#3The DEFINE/KEY command defines PF1 as the SDA SHOW STACK command. The /TERMINATE qualifier causes SDA to execute the SHOW STACK command without waiting for you to press the Return key.
SDA> DEFINE/KEY/SET_STATE="GREEN" PF1 "" SDA> DEFINE/KEY/TERMINATE/IF_STATE=GREEN PF3 "SHOW STACK" SDA> [PF1] [PF3] SHOW STACK Process stacks (on CPU 00) ------------------------- Current operating stack (KERNEL): . . .
The first DEFINE/KEY command defines PF1 as a key that sets a command state GREEN. The trailing pair of quotation marks is required syntax, indicating that no command is to be executed when this key is pressed.
The second DEFINE command defines PF3 as the SHOW STACK command, but using the /IF_STATE qualifier, makes the definition valid only when the command state is GREEN. Thus, the user must press PF1 before pressing PF3 to issue the SHOW STACK command. The /TERMINATE qualifier causes the command to execute as soon as the PF3 key is pressed.
Computes and displays the value of the specified expression in both hexadecimal and decimal. Alternative evaluations of the expression are available with the use of the qualifiers defined for this command.
EVALUATE [{/CONDITION_VALUE|/PS|/PTE|/SYMBOLS |/TIME}] expression
expression
SDA expression to be evaluated. Section 6.2 describes the components of SDA expressions.
/CONDITION_VALUE
Displays the message that the $GETMSG system service obtains for the value of the expression./PS
Evaluates the specified expression in the format of a processor status./PTE
Interprets and displays the expression as a page table entry (PTE). The individual fields of the PTE are separated and an overall description of the PTE's type is provided./SYMBOLS
Specifies that all symbols known to be equal to the evaluated expression are to be listed in alphabetical order. The default behavior of the EVALUATE command displays only the first several symbols./TIME
Interprets and displays the expression as a 64-bit time value. Positive values are interpreted as absolute time; negative values are interpreted as delta time.
If the expression is equal to the value of a symbol in the SDA symbol table, that symbol is displayed. If no symbol with this value is known, the next lower valued symbol is displayed with an appropriate offset unless the offset is extremely large. The DEFINE command adds symbols to the SDA symbol table but does not display the results of the computation. EVALUATE displays the result of the computation but does not add symbols to the SDA symbol table.If no qualifier is specified, the EVALUATE command interprets and displays the expression as hexadecimal and decimal values.
#1
SDA> EVALUATE -1 Hex = FFFFFFFF.FFFFFFFF Decimal = -1 I
#2The EVALUATE command evaluates a numeric expression, displays the value of that expression in hexadecimal and decimal notation, and displays a symbol that has been defined to have an equivalent value.
SDA> EVALUATE 1 Hex = 00000000.00000001 Decimal = 1 CHF$M_CALEXT_CANCEL CHF$M_FPREGS_VALID CHF$V_CALEXT_LAST IRP$M_BUFIO IRP$M_CLN_READY | (remaining symbols suppressed by default)
#3The EVALUATE command evaluates a numeric expression and displays the value of that expression in hexadecimal and decimal notation. This example also shows the symbols that have the displayed value. A finite number of symbols are displayed by default.
SDA> DEFINE TEN = A SDA> EVALUATE TEN Hex = 00000000.0000000A Decimal = 10 IRP$B_TYPE IRP$S_FMOD IRP$V_MBXIO TEN UCB$B_TYPE | (remaining symbols suppressed by default)
#4This example shows the definition of a symbol named TEN. The EVALUATE command then shows the value of the symbol.
Note that A, the value assigned to the symbol by the DEFINE command, could be a symbol. When SDA evaluates a string that can be either a symbol or a hexadecimal numeral, it first searches its symbol table for a definition of the symbol. If SDA finds no definition for the string, it evaluates the string as a hexadecimal number.
SDA> EVALUATE (((TEN * 6) + (-1/4)) + 6) Hex = 00000000.00000042 Decimal = 66
#5This example shows how SDA evaluates an expression of several terms, including symbols and rational fractions. SDA evaluates the symbol, substitutes its value in the expression, and then evaluates the expression. Note that the fraction -1/4 is truncated to 0.
SDA> EVALUATE/CONDITION 80000018 %SYSTEM-W-EXQUOTA, exceeded quota
#6This example shows the output of an EVALUATE/CONDITION command.
SDA> EVALUATE/PS 0B03 MBZ SPAL MBZ IPL VMM MBZ CURMOD INT PRVMOD 0 00 00000000000 0B 0 0 KERN 0 USER
#7SDA interprets the entered value 0B03 as though it were a processor status (PS) and displays the resulting field values.
SDA> EVALUATE/PTE 0BCDFFEE3 3 2 2 2 1 1 1 1 0 9 7 0 8 6 5 7 6 0 +-+-+--+--------------+-+-+---+-+---------------+-+-----------+-+ |0|0|00| 005E |0|X| 02|1| FF |X| 37 |0| +-+-+--+--------------+-+-+---+-+---------------+-+-----------+-+ | 00000000 | +---------------------------------------------------------------+ Global PTE: Owner = S, Read Prot = KESU, Write Prot = KESU, CPY = 0 GPT Index = 00000000
#8The EVALUATE/PTE command displays the expression ABCDFFEE as a page table entry (PTE) and labels the fields. It also describes the status of the page.
SDA>EVALUATE/TIME 009A9A4C.843DBA9F 10-OCT-1996 15:59:44.02
This example shows the use of the EVALUATE/TIME command.
Displays either the contents of a location or range of locations in physical memory, or the contents of a register. Use location parameters to display specific locations or use qualifiers to display entire process and system regions of memory.
EXAMINE [/qualifier[,...]] [location]
location
Location in memory to be examined. A location can be represented by any valid SDA expression. (See Section 6.2 for additional information about expressions.) To examine a range of locations, the following syntax is used:
m:n Range of locations to be examined, from m to n m;n Range of locations to be examined, starting at m and continuing for n bytes The default location that SDA uses is initially 0 in the program region (P0) of the process that was executing at the time the system failed (if you are examining a crash dump) or your process (if you are examining the running system). Subsequent uses of the EXAMINE command with no parameter specified increase the last address examined by 8. Use of the /INSTRUCTION qualifier increases the default address by 4. To examine memory locations of other processes, you must use the SET PROCESS command.
/ALL
Examines all the locations in the program, and control regions and parts of the writable system region, displaying the contents of memory in hexadecimal longwords. Do not specify parameters when you use this qualifier./CONDITION_VALUE
Examines the specified longword, displaying the message the $GETMSG system service obtains for the value in the longword./INSTRUCTION
Translates the specified range of memory locations into assembly instruction format. Each symbol in the EXAMINE expression that is defined as a procedure descriptor is replaced with the code entry point address of that procedure, unless you also specify the /NOPD qualifier./NOPD
Can be used with the /INSTRUCTION qualifier to override treating symbols as procedure descriptors. The qualifier can be placed immediately after the /INSTRUCTION qualifier, or following a symbol name./NOSUPPRESS
Inhibits the suppression of zeros when displaying memory with one of the following qualifiers: /ALL, /P0, /P1, /SYSTEM./P0
Displays the entire program region for the default process. Do not specify parameters when you use this qualifier./P1
Displays the entire control region for the default process. Do not specify parameters when you use this qualifier./PD
Causes the EXAMINE command to treat the location specified in the EXAMINE command as a procedure descriptor (PD). PD can also be used to qualify symbols./PHYSICAL
Examines physical addresses. The /PHYSICAL qualifier cannot be used in combination with the /P0, /P1, or /SYSTEM qualifiers./PS
Examines the specified quadword, displaying its contents in the format of a processor status. This qualifier must precede any parameters used in the command line./PTE
Interprets and displays the specified quadword as a page table entry (PTE). The display separates individual fields of the PTE and provides an overall description of the PTE's type./SYSTEM
Displays portions of the writable system region. Do not specify parameters when you use this qualifier./TIME
Examines the specified quadword, displaying its contents in the format of a system-date-and-time quadword.
The following sections describe how to use the EXAMINE command.Examining Locations
When you use the EXAMINE command to look at a location, SDA displays the location in symbolic notation (symbolic name plus offset), if possible, and its contents in hexadecimal and ASCII formats:
SDA> EXAMINE G6605C0 806605C0: 64646464.64646464 "dddddddd"If the ASCII character that corresponds to the value contained in a byte is not printable, SDA displays a period (.). If the specified location does not exist in memory, SDA displays this message:
%SDA-E-NOTINPHYS, address : virtual data not in physical memoryTo examine a range of locations, you can designate starting and ending locations separated by a colon. For example:
SDA> EXAMINE G40:G200Alternatively, you can specify a location and a length, in bytes, separated by a semicolon. For example:SDA> EXAMINE G400;16When used to display the contents of a range of locations, the EXAMINE command displays six columns of information:
- Each of the first four columns represents a longword of memory, the contents of which are displayed in hexadecimal format.
- The fifth column lists the ASCII value of each byte in each longword displayed in the previous four columns.
- The sixth column contains the address of the first, or rightmost, longword in each line. This address is also the address of the first, or leftmost, character in the ASCII representation of the longwords. Thus, you read the hexadecimal dump display from right to left, and the ASCII display from left to right.
If a series of virtual addresses does not exist in physical memory, SDA displays a message specifying the range of addresses that were not translated.
If a range of virtual locations contains only zeros, SDA displays this message:
Zeros suppressed from 'loc1' to 'loc2'Decoding Locations
You can translate the contents of memory locations into instruction format by using the /INSTRUCTION qualifier. This qualifier causes SDA to display the location in symbolic notation (if possible) and its contents in instruction format. The operands of decoded instructions are also displayed in symbolic notation. The location must be longword assigned.
Examining Memory Regions
You can display an entire region of virtual memory by using one or more of the qualifiers /ALL, /SYSTEM, /P0, and /P1 with the EXAMINE command.
Other Uses
Other uses of the EXAMINE command appear in the following examples.
#1
SDA> EXAMINE/PS 7FF95E78 MBZ SPAL MBZ IPL VMM MBZ CURMOD INT PRVMOD 0 00 00000000000 08 0 0 KERN 0 EXEC
#2This example shows the display produced by the EXAMINE/PS command.
SDA>EXAMINE/PTE @^QMMG$GG_L1_BASE
3 3 2 2 2 1 1 1 1 0 9 7 0 8 6 5 7 6 0 +-+-+--+--------------+-+-+---+-+---------------+-+-----------+-+ |0|1|00| 0000 |0|X| 00|0| 11 |X| 04 |1| +-+-+--+--------------+-+-+---+-+---------------+-+-----------+-+ | 00000C37 | +---------------------------------------------------------------+ Valid PTE: Read Prot = K---, Write Prot = K--- Owner = K, Fault on = -E--, ASM = 00, Granularity Hint = 00 CPY = 00 PFN = 00000C37The EXAMINE/PTE command displays and formats the level 1 page table entry at FFFFFFFF.FF7FC000.
Exits from an SDA display or exits from the SDA utility.
EXIT
None.
None.
If SDA is displaying information on a video display terminal---and if that information extends beyond one screen---SDA displays a screen overflow prompt at the bottom of the screen:Press RETURN for more. SDA>If you want to discontinue the current display at this point, enter the EXIT command. If you want SDA to execute another command, enter that command. SDA discontinues the display as if you entered EXIT, and then executes the command you entered.
When the SDA> prompt is not immediately preceded by the screen overflow prompt, entering EXIT causes your process to cease executing the SDA utility. When issued within a command procedure (either the SDA initialization file or a command procedure invoked with the execute command (@)), EXIT causes SDA to terminate execution of the procedure and return to the SDA prompt.
Displays a formatted list of the contents of a block of memory.
FORMAT [/TYPE=block-type] location [/PHYSICAL]
location
Location of the beginning of the data block. The location can be given as any valid SDA expression.
/TYPE=block-type
Forces SDA to characterize and format a data block at location as the specified type of data structure. The /TYPE qualifier thus overrides the default behavior of the FORMAT command in determining the type of a data block, as described in the Description section. The block-type can be the symbolic prefix of any data structure defined by the operating system./PHYSICAL
Specifies that the location given is a physical address.
The FORMAT command performs the following actions:Normally, you use the FORMAT command without the /TYPE qualifier. Used in this manner, it examines the byte in the structure that contains the type of the structure. In most OpenVMS Alpha data structures, this byte occurs at an offset of 0A16 into the structure. If this byte does not contain a valid block type, the FORMAT command displays the following message:
- Characterizes a range of locations as a system data block
- Assigns, if possible, a symbol to each item of data within the block
- Displays all the data within the block
%SDA-E-INVBLKTYP, invalid block type in specified blockHowever, if this byte does contain a valid block type, SDA checks the next byte (offset 0B16) for a secondary block type. When SDA has determined the type of block, it searches for the symbols that correspond to that type of block.If SDA cannot find the symbols associated with the block type it has found (or that you specified in the /TYPE qualifier), it issues this message:
%SDA-E-NOSYMBOLS, no "block-type" symbols found to format this blockIf you receive this message, you may want to read additional symbols into the SDA symbol table and retry the FORMAT command. Many symbols that define OpenVMS Alpha data structures are contained within SDA$READ_DIR:SYSDEF.STB. Thus, you would issue the following command:
SDA> READ SDA$READ_DIR:SYSDEF.STBIf SDA issues the same message again, try reading additional symbols. Table SDA-4 lists additional modules provided by the OpenVMS operating system. Alternatively, you can create your own object modules with the MACRO-32 Compiler for OpenVMS Alpha.
Certain OpenVMS Alpha data structures do not contain a block type at offset 0A16. If this byte contains information other than a block type---or the byte does not contain a valid block type---SDA either formats the block in a totally inappropriate way, based on the contents of 0A16 and 0B16, or displays this message:
%SDA-E-INVBLKTYP, invalid block type in specified blockTo format such a block, you must reissue the FORMAT command, using the /TYPE qualifier to designate a block-type.
The FORMAT command produces a 3-column display:
- The first column shows the virtual address of each item within the block.
- The second column lists each symbolic name associated with a location within the block.
- The third column shows the contents of each item in hexadecimal format.
SDA>READ SDA$READ_DIR:SYSDEF.STB %SDA-I-READSYM, 913 symbols read from SYS$COMMON:[SYS$LDR]SYSDEF.STB SDA>FORMAT G41F818 FFFFFFFF.8041F818 UCB$L_FQFL 8041F818 UCB UCB$L_MB_MSGQFL UCB$L_RQFL UCB$W_MB_SEED UCB$W_UNIT_SEED FFFFFFFF.8041F81C UCB$L_FQBL 8041F818 UCB UCB$L_MB_MSGQBL UCB$L_RQBL FFFFFFFF.8041F820 UCB$W_SIZE 0110 FFFFFFFF.8041F822 UCB$B_TYPE 10 FFFFFFFF.8041F823 UCB$B_FLCK 2C FFFFFFFF.8041F824 UCB$L_ASTQFL 00000000 UCB$L_FPC UCB$L_MB_W_AST UCB$T_PARTNER . . .
The READ command loads into SDA's symbol table the symbols from SDA$READ_DIR:SYSDEF.STB. The FORMAT command displays the data structure that begins at G41F81816, a unit control block (UCB). If a field has more than one symbolic name, all such names are displayed. Thus, the field that starts at 8041F82416 has four designations: UCB$L_ASTQFL, UCB$L_FPC, UCB$L_MB_W_AST, and UCB$T_PARTNER.
The contents of each field appear to the right of the symbolic name of the field. Thus, the contents of UCB$L_FQBL are 8041F81816.
Displays information about the SDA utility, its operation, and the format of its commands.
HELP [command-name]
command-name
Command for which you need information.You can also specify the following keywords in place of command-name:
Keyword Function CPU_CONTEXT Describes the concept of CPU context as it governs the behavior of SDA. EXECUTE_COMMAND Describes the use of @ file to execute SDA commands contained in a file. EXPRESSIONS Prints a description of SDA expressions. INITIALIZATION Describes the circumstances under which SDA executes an initialization file when first invoked. OPERATION Describes how to operate SDA at your terminal and by means of the site-specific startup procedure. PROCESS_CONTEXT Describes the concept of process context as it governs the behavior of SDA. SYMBOLS Describes the symbols used by SDA.
None.
The HELP command displays brief descriptions of SDA commands and concepts on the terminal screen (or sends these descriptions to the file designated in a SET OUTPUT command). You can request additional information by specifying the name of a topic in response to the Topic? prompt.If you do not specify a parameter in the HELP command, it lists those commands and topics for which you can request help, as follows:
Information available: ATTACH CLUE COPY CPU_Context DEFINE EVALUATE EXAMINE Execute_Command EXIT Expressions FORMAT HELP Initialization MAP Operation Process_Context READ REPEAT SEARCH SET SHOW SPAWN Symbols VALIDATE Topic?
Transforms an address into an offset in a particular image.
MAP address
address
Address to be identified.
None.
The MAP command identifies the image name and offset corresponding to an address. With this information, you can examine the image map to locate the source module and program section offset corresponding to an address. MAP searches for the specified address in executive images first. It then checks activated images in process space to include those images installed using the /RESIDENT qualifier of the Install utility. Finally, it checks all image-resident sections in system space.If the address cannot be found, MAP displays the following message:
%SDA-E-NOTINIMAGE, Address not within a system/installed image
#1
SDA> MAP G90308 Image Base End Image Offset SYS$VM Nonpaged read only 80090000 800ABA00 00000308
#2Examining the image map identified by this MAP command (SYS$VM.MAP) shows that image offset 308 falls within psect EXEC$HI_USE_PAGEABLE_CODE because the psect goes from offset 0 to offset 45D3:
Psect Name Module Name Base End Length Align ---------- ----------- ---- --- ------ ----- $CODE$ 00000000 00000000 00000000 ( 0.) QUAD 3... BUGCHECK_CODES 00000000 00000000 00000000 ( 0.) QUAD 3 $GLOBAL$ 00000000 00000000 00000000 ( 0.) QUAD 3... BUGCHECK_CODES 00000000 00000000 00000000 ( 0.) QUAD 3 $LINK$ 00000000 00000000 00000000 ( 0.) QUAD 3... BUGCHECK_CODES 00000000 00000000 00000000 ( 0.) QUAD 3 $OWN$ 00000000 00000000 00000000 ( 0.) QUAD 3... BUGCHECK_CODES 00000000 00000000 00000000 ( 0.) QUAD 3 $PLIT$ 00000000 00000000 00000000 ( 0.) QUAD 3... BUGCHECK_CODES 00000000 00000000 00000000 ( 0.) QUAD 3 . LITERAL . 00000000 00000000 00000000 ( 0.) QUAD 3... BUGCHECK_CODES 00000000 00000000 00000000 ( 0.) QUAD 3 . BLANK . 00000000 00000000 00000000 ( 0.) OCTA 4... SYS$DOINIT 00000000 00000000 00000000 ( 0.) OCTA 4 EXECUTE_FAULT 00000000 00000000 00000000 ( 0.) OCTA 4 GSD_ROUTINES 00000000 00000000 00000000 ( 0.) OCTA 4 IOLOCK 00000000 00000000 00000000 ( 0.) OCTA 4 . . . EXEC$HI_USE_PAGEABLE_CODE 00000000 000045D3 000045D4 ( 17876.) 2 ** 5... SYSCREDEL 00000000 0000149B 0000149C ( 5276.) 2 ** 5 SYSCRMPSC 000014A0 000045D3 00003134 ( 12596.) 2 ** 5 EXEC$NONPAGED_CODE 000045E0 0001B8B3 000172D4 ( 94932.) 2 ** 5... EXECUTE_FAULT 000045E0 0000483B 0000025C ( 604.) 2 ** 5 IOLOCK 00004840 000052E7 00000AA8 ( 2728.) 2 ** 5 LOCK_SYSTEM_PAGES . . .Specifically, image offset 308 is located within source module SYSCREDEL. Therefore, to locate the corresponding code, you would look in SYSCREDEL for offset 308 in psect EXEC$HI_USE_PAGEABLE_CODE.
SDA> MAP G550000 Image Base End Image Offset SYS$DKDRIVER 80548000 80558000 00008000
Previous | Next | Contents | [Home] | [Comments] | [Ordering info] | [Help]
![]()
6135P004.HTM OSSG Documentation 22-NOV-1996 14:11:52.20Copyright © Digital Equipment Corporation 1996. All Rights Reserved.