Document revision date: 30 March 2001

## OpenVMS VAX System Dump Analyzer Utility Manual

Previous | Contents | Index

The READ command causes SDA to add all the global symbols in SYS$SYSTEM:SYSDEF.STB to the SDA symbol table. Such symbols are useful when you are formatting an I/O data structure, such as a unit control block or an I/O request packet.

#2
    SDA>  EXAM/INST EXE$QIO+2;4
    EXE$QIO+00002:  CHMK    #001F
    EXE$QIO+00006:  RET
    SDA>  EXAM/INST V_EXE$QIO
    %SDA-E-BADSYM, unknown symbol "V_EXE$QIO"
    SDA>  READ/RELOCATE=IO_ROUTINES SYS$LOADABLE_IMAGES:IO_ROUTINES.EXE
    %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]IO_ROUTINES.EXE;1
    SDA>  EXAM/INST EXE$QIO+2;4
    EXE$QIO+00002:  MOVZBL  04(AP),R3
    EXE$QIO+00006:  CMPB    R3,#3F
    SDA>  EXAM/INST V_EXE$QIO+2;4
    V_EXE$QIO+00002:  CHMK    #001F
    V_EXE$QIO+00006:  RET

> This SDA session shows that the initial examination of the instructions at EXE$QIO+2 and EXE$QIO+6 produces the vector for the system service, not the system service code itself. The subsequent READ instruction brings into the SDA symbol table the global symbols defined for the system's I/O routines, including one that redefines the entry point of the system service to be the start of the routine EXE$QIO. Thus, the second examination of the same memory locations produces the first two instructions in the routine. The READ command creates a special symbol, V_EXE$QIO, that points to the system service vector.

#3
    SDA>  SHOW STACK
    Process stacks (on CPU 01)
    --------------------------
    Current operating stack (KERNEL):

                    7FF8F2B0  806BA870
                    7FF8F2B4  7FF8F4C0
                    7FF8F2B8  8016F33E     PAGE_MANAGEMENT+0053E
       .
       .
       .
    SDA>  READ/RELOCATE=PAGE_MANAGEMENT SYS$LOADABLE_IMAGES:PAGE_MANAGEMENT.EXE
    %SDA-I-READSYM, reading symbol table SYS$COMMON:[SYS$LDR]PAGE_MANAGEMENT.EXE;1
    SDA>  SHOW STACK
    Process stacks (on CPU 01)
    --------------------------
    Current operating stack (KERNEL):

                    7FF8F2B0  806BA870
                    7FF8F2B4  7FF8F4C0
                    7FF8F2B8  8016F33E     MMG$LOCK_SYSTEM_PAGES+00188
       .
       .
       .

> The initial SHOW STACK command contains an address that SDA resolves into an offset from the PAGE_MANAGEMENT module of the executive. The READ command loads the corresponding symbols into the SDA symbol table such that the reissue of the SHOW STACK command subsequently identifies the same location as an offset within a specific page management routine.

#4
     READ/EXEC

>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]RECOVERY_UNIT_SERVICES.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]RMS.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]CPULOA.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]LMF$GROUP_TABLE.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]SYSLICENSE.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]SYSGETSYI.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]SYSDEVICE.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]MESSAGE_ROUTINES.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]EXCEPTION.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]LOGICAL_NAMES.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]SECURITY.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]LOCKING.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]PAGE_MANAGEMENT.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]WORKING_SET_MANAGEMENT.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]IMAGE_MANAGEMENT.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]EVENT_FLAGS_AND_ASTS.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]IO_ROUTINES.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]PROCESS_MANAGEMENT.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]ERRORLOG.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]PRIMITIVE_IO.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]SYSTEM_SYNCHRONIZATION.EXE;1
>      %SDA-I-READSYM, reading symbol table  SYS$COMMON:[SYS$LDR]SYSTEM_PRIMITIVES.EXE;1

> This READ command brings all global symbols defined in the modules of SYS$SYSTEM:SYS.EXE (as listed in Table SDA-13) into the SDA symbol table. Included in its results is the work performed by the READ commands illustrated in the two previous examples. The READ/EXECUTIVE command, however, does not load those symbols contained in the modules described in Table SDA-12.

## REPEAT

> Repeats execution of the last command issued. On terminal devices, the KP0 key performs the same function as the REPEAT command.

### Format

> REPEAT

### Parameters

> None.

### Qualifiers

> None.

### Description

> The REPEAT command is useful for stepping through a linked list of data structures or for examining a sequence of memory locations.

### Examples

#1
    SDA>  FORMAT @IOC$GL_DEVLIST
    8000B540   DDB$L_LINK              8000B898
    8000B544   DDB$L_UCB               8000B5E0
    8000B548   DDB$W_SIZE                  0044
       .
       .
       .
    8000B554   DDB$B_NAME_LEN                03
               DDB$T_NAME              "OPA"
       .
       .
       .
    SDA>  FORMAT @.
    8000B898   DDB$L_LINK              8000BBE0
    8000B89C   DDB$L_UCB               8000B9E0
    8000B8A0   DDB$W_SIZE                  0044
       .
       .
       .
    8000B8AC   DDB$B_NAME_LEN                03
               DDB$T_NAME              "MBA"
    SDA>  [KP0]
    8000BBE0   DDB$L_LINK              807F85C0
    8000BBE4   DDB$L_UCB               8000BC80
    8000BBE8   DDB$W_SIZE                  0044
       .
       .
       .
    8000BBF4   DDB$B_NAME_LEN                03
               DDB$T_NAME              "NLA"

> This series of FORMAT commands pursues the chain of device data blocks (DDBs) from the system global symbol IOC$GL_DEVLIST. The second FORMAT command is constructed so that it refers to the contents of the address at the current location (see Section 7.2.4 for a discussion of SDA symbols). Subsequently, pressing the KP0 key---or issuing the REPEAT command---is sufficient to display each DDB in the device list.

#2
    SDA> SHOW CALL_FRAME
    Call Frame Information
    ----------------------
            Call Frame Generated by CALLG Instruction

    Condition Handler       7FFE7D78  00000000
    SP Align Bits = 00      7FFE7D7C  00000000
       Saved AP             7FFE7D80  7FFE7DC0      CTL$GL_KSTKBAS+005C0
       Saved FP             7FFE7D84  7FFE7D94      CTL$GL_KSTKBAS+00594
       .
       .
       .
    SDA> SHOW CALL_FRAME/NEXT_FP
    Call Frame Information
    ----------------------
            Call Frame Generated by CALLS Instruction

    Condition Handler       7FFE7D94  00000000
    SP Align Bits = 00      7FFE7D98  20FC0000
       Saved AP             7FFE7D9C  7FFED024      CTL$GL_KSTKBAS+005E4
       Saved FP             7FFE7DA0  7FFE7DE4      SYSTEM_PRIMITIVES+020AA
       .
       .
       .
    SDA> REPEAT
    Call Frame Information
    ----------------------
            Call Frame Generated by CALLG Instruction

    Condition Handler       7FFE7DE4  00000000
       .
       .
       .

> The first SHOW CALL_FRAME displays the call frame indicated by the current FP value. Because the /NEXT_FP qualifier to the instruction displays the call frame indicated by the saved FP in the current call frame, you can use the REPEAT command to repeat the SHOW CALL_FRAME/NEXT_FP command and follow a chain of call frames.

## SEARCH

> Scans a range of memory locations for all occurrences of a specified value.

### Format

> SEARCH [/qualifier] range[=]expression

### Parameters

> #### range

> Location in memory to be searched. A location can be represented by any valid SDA expression (see Section 7.2). To search a range of locations, use the following format:

> m:n | Range of locations to be searched, from m to n
> m;n | Range of locations to be searched, starting at m and continuing for n bytes

> #### expression

> Indication of the value for which SDA is to search. SDA evaluates the expression and searches the specified range of memory for the resulting value. For a description of SDA expressions, see Section 7.2.

### Qualifiers

> #### /LENGTH={LONGWORD|WORD|BYTE}

> Specifies the size of the expression value that the SEARCH command uses for matching. If you do not specify the /LENGTH qualifier, the SEARCH command uses a longword length by default.

> #### /STEPS={QUADWORD|LONGWORD|WORD|BYTE}

> Specifies the granularity of the search through the specified memory range. After the SEARCH command has performed the comparison between the value of expression and memory location, it adds the specified step factor to the address of the memory location to determine the next location to undergo the comparison. If you do not specify the /STEPS qualifier, the SEARCH command uses a step factor of one longword.

### Description

> SEARCH displays each location as each value is found.

###

#### Examples

#1
    SDA> SEARCH GB81F0;500 60068
    Searching from 800B81F0 to 800B86F0 in LONGWORD steps for 00060068...
    Match at 800B8210
    SDA>

> The SEARCH command finds the value 0060068 in the longword at 800B8210.

#2
    SDA> SEARCH/STEPS=BYTE 80000000;1000 6
    Searching from 80000000 to 80001000 in BYTE steps for 00000006...
    Match at 80000A99
    SDA>

> The SEARCH command finds the value 00000006 in the longword at 80000A99.

#3
    SDA> SEARCH/LENGTH=WORD 80000000;2000 6
    Searching from 80000000 to 80002000 in LONGWORD steps for 0006...
    Match at 80000054
    Match at 800001EC
    Match at 800012AC
    Match at 800012B8
    SDA>

> The SEARCH command finds the value 0006 in the longword locations 80000054, 800001EC, 800012AC, and 800012B8.

## SET CPU

> Selects a processor to become the SDA current CPU.

### Format

> SET CPU cpu-id

### Parameter

> #### cpu-id

> Numeric value from 0016 to 1F16 indicating the identity of the processor to be made the current CPU. If you specify a value outside this range or a cpu-id of a processor that was not active at the time of the system failure, SDA displays the following message:

>     %SDA-E-CPUNOTVLD, CPU not booted or CPU number out of range

### Qualifiers

> None.

### Description

> When you invoke SDA to examine a system dump, the SDA current CPU context defaults to that of the processor that caused the system to fail. When analyzing a crash from a multiprocessing system, you might find it useful at times to examine the context of another processor in the configuration.

> The SET CPU command changes the current SDA CPU context to that of the processor indicated by cpu-id. The CPU specified by this command becomes the current CPU for SDA until you exit SDA or change SDA CPU context by issuing one of the following commands:

> > SET CPU cpu-id
> > SHOW CPU cpu-id
> > SHOW CRASH

> The following commands also change SDA CPU context if the name or index number (nn) refers to a current process:

> > SET PROCESS name
> > SET PROCESS/INDEX=nn
> > SHOW PROCESS name
> > SHOW PROCESS/INDEX=nn

> Changing CPU context can cause an implicit change in process context under the following circumstances:

> - If there is a current process on the CPU made current, SDA changes its process context to that of that CPU's current process.
> - If there is no current process on the CPU made current, SDA process context is undefined and no process-specific information is available until you set SDA process context to that of a specific process.

> See Section 4 for further discussion on the way in which SDA maintains its context information.

> You cannot use the SET CPU command when examining the running system with SDA.

### Example

    $ ANALYZE/CRASH SYS$SYSTEM:SYSDUMP.DMP
    Dump taken on 22-FEB-1993 14:22:17.66
    NOBUFPCKT, Required buffer packet not present

    SDA> SHOW CPU
    CPU 01 Processor crash information
    ----------------------------------

    CPU 01 reason for Bugcheck: NOBUFPCKT, Required buffer packet not present
       .
       .
       .
    SDA> SHOW STACK
    CPU 01 Processor stack
    ----------------------
    Current operating stack (INTERRUPT):
            80DAFB4C    8018BC20
            80DAFB50    7FFC653E
       .
       .
       .
    SDA> SET CPU 00
    SDA> SHOW CPU
    CPU 00 Processor crash information
    ----------------------------------

    CPU 00 reason for Bugcheck: CPUEXIT, Shutdown requested by another CPU
       .
       .
       .
    SDA> SHOW STACK
    CPU 00 Processor stack
    ----------------------
    Current operating stack (INTERRUPT):
            8016ABD8    00011F4C
            8016ABDC    00010F56
       .
       .
       .
    SDA> SHOW CRASH
    System crash information
    ------------------------
    Time of system crash: 22-FEB-1993 14:22:17.66
       .
       .
       .
    SDA> SHOW STACK
    CPU 01 Processor stack
    ----------------------
    Current operating stack (INTERRUPT):
            80DAFB4C    8018BC20
            80DAFB50    7FFC653E
       .
       .
       .

> The series of SHOW CPU and SHOW STACK commands in this example illustrates the switching of CPU context within an SDA session:

> 1. When you first invoke SDA, it is, by default, within the CPU context of the processor that caused the crash (CPU 01). This is illustrated by the first set of SHOW CPU and SHOW STACK commands.
> 2. The SET CPU 00 command explicitly changes SDA CPU context to that of CPU 00, as illustrated by the second sequence of SHOW CPU and SHOW STACK commands.
>    Note that a SHOW CPU 00 command would have the same effect as the two commands SET CPU 00 and SHOW CPU, changing the SDA CPU context in addition to displaying the processor-specific information. Unlike the SHOW CPU cpu-id command, no display is associated with the SET CPU cpu-id command.
> 3. The SHOW CRASH command resets the SDA CPU context to that of the processor that caused the crash (CPU 01).

## SET LOG

> Initiates or discontinues the recording of an SDA session in a text file.

### Format

> SET [NO]LOG filespec

### Parameter

> #### filespec

> Name of the file in which you want SDA to log your commands and their output. The default filespec is SYS$DISK:[default_dir]filename.LOG, where SYS$DISK and [default-dir] represent the disk and directory specified in your last SET DEFAULT command. You must specify a file name.

### Qualifiers

> None.

### Description

> The SET LOG command echoes the commands and output of an SDA session to a log file. The SET NOLOG command terminates this behavior.

> There are the following differences between the SET LOG command and the SET OUTPUT command:

> - When logging is in effect, your commands and their results are still displayed on your terminal. The SET OUTPUT command causes the displays to be redirected to the output file such that they no longer appear on the screen.
> - If an SDA command requires that you press Return to produce successive screens of display, the log file produced by SET LOG will record only those screens that are actually displayed. SET OUTPUT, however, sends the entire output of all SDA commands to its listing file.
> - The SET LOG command produces a log file with a default file type of .LOG; the SET OUTPUT command produces a listing file whose default file type is .LIS.
> - The SET LOG command does not record output from the HELP command in its log file. The SET OUTPUT command can record HELP output in its listing file.
> - The SET LOG command does not record SDA error messages in its log file. The SET OUTPUT command can record SDA error messages in its listing file.
> - The SET OUTPUT command generates a table of contents, each item of which refers to a display written to its listing file. SET OUTPUT also produces running heads for each page of output. The SET LOG command does not produce these items in its log file.

> Note that, if you have used the SET OUTPUT command to redirect output to a listing file, you cannot use a SET LOG command to direct the same output to a log file.

## SET OUTPUT

> Redirects output from SDA to the specified file or device.

### Format

> SET OUTPUT filespec

### Parameter

> #### filespec

> Name of the file to which SDA is to send the output generated by its commands. The default filespec is SYS$DISK:[default_dir]filename.LIS, where SYS$DISK and [default-dir] represent the disk and directory specified in your last SET DEFAULT command. You must specify a file name.

### Description

> When you use the SET OUTPUT command to send the SDA output to a file or device, SDA continues to display the SDA commands that you enter but sends the output generated by those commands to the file or device that you specify. (See the description of the SET LOG command for a list of differences between SET LOG and the SET OUTPUT command.)

> When you finish directing SDA commands to an output file and want to return to interactive display, issue the following command:

>     SDA> SET OUTPUT SYS$OUTPUT

> If you use the SET OUTPUT command to send the SDA output to a listing file, SDA builds a table of contents that identifies the displays you selected and places the table of contents at the beginning of the output file. The SET OUTPUT command formats the output into pages and produces a running head at the top of each page.

## SET PROCESS

> Selects a process to become the SDA current process.

### Format

> SET PROCESS {process-name|/INDEX=nn|/SYSTEM}

### Parameter

> #### process-name

> Name of the process to become the SDA current process. The process-name is a string containing up to 15 uppercase or lowercase characters; numerals, the dollar sign ($) character, and the underscore (_) character can also be included in the string. If you include characters other than these, you must enclose the entire string in quotation marks (" ").

### Qualifiers

> #### /INDEX=nn

> Specifies the process to be made current by its index into the system's list of software process control blocks (PCBs). You can supply either of the following values for nn:
> - The process index itself
> - The process identification (PID) or extended PID longword, from which SDA extracts the correct index

> To obtain these values for any given process, issue the SDA command SHOW SUMMARY.

> #### /SYSTEM

> Specifies that the system process be made the SDA current process. Each system (uniprocessor or multiprocessor) uses a single system process control block (PCB) and process header (PHD) as dummy structures, located in system space, that record the system working set, global section table, global page table, and other systemwide data.

### Description

> When you issue an SDA command such as an EXAMINE command, SDA displays the contents of memory locations in its current process. To display any information about another process, you must change the current process with the SET PROCESS command.

> When you invoke SDA to analyze a crash dump, its process context defaults to that of the process that was current at the time of the crash. If the crash occurred on a multiprocessing system, SDA sets the CPU context to that of the processor that crashed the system and the process context to that of the process that was current on that processor.

> When you invoke SDA to analyze a running system, its process context defaults to that of the current process; that is, the one executing SDA.

> The SET PROCESS command changes the current SDA process context to that of the process indicated by name or /INDEX=nn. The process specified by this command becomes the current process for SDA until you exit SDA or change SDA process context by issuing one of the following commands:

> > SET PROCESS/INDEX=nn
> > SET PROCESS process-name
> > SHOW PROCESS/INDEX=nn

> In the analysis of a crash dump from a multiprocessing system, changing process context can involve a switch of CPU context as well. For instance, if you issue a SET PROCESS command for a process that is current on another CPU, SDA will automatically change its CPU context to that of the CPU on which that process is current. The following commands can have this effect if process-name or index number (nn) refers to a current process:

> > SET PROCESS process-name
> > SET PROCESS/INDEX=nn
> > SHOW PROCESS process-name
> > SHOW PROCESS/INDEX=nn

> See Section 4 for further discussion on the way in which SDA maintains its context information.

### Example

    SDA> SHOW PROCESS
    Process index: 0012   Name: NETACP   Extended PID: 28C00092
    -----------------------------------------------------------
    Process status:  00149001   RES,WAKEPEN,NOACNT,PHDRES,LOGIN
    PCB address              800F1140    JIB address              801FDA00
    PHD address              80477200    Swapfile disk address    01000F01
       .
       .
       .

    SDA> SHOW SUMMARY
    Current process summary
    -----------------------

     Extended Indx Process name    Username    State Pri   PCB      PHD    Wkset
    -- PID -- ---- --------------- ----------- ----- --- -------- -------- -----
     28C00080 0000 SWINGER                      COM    0 80002100 80001F88     0
     28C00081 0001 SWAPPER                      HIB   16 800023C8 80002250     0
     28C00483 0003 KLINGON         KLINGON      MWAIT  6 8010FEA0 803F8600   323
     28C00085 0005 ERRFMT          SYSTEM       COM   10 800B5A10 8061DA00    69
     28C00087 0007 OPCOM           SYSTEM       LEF    7 800C7000 80227A00    71
       .
       .
       .
    SDA>SET PROCESS ERRFMT
    SDA> SHOW PROCESS
    Process index: 0005   Name: ERRFMT   Extended PID: 28C00085
    --------------
    Process status:  00040001   RES,PHDRES
    PCB address              800B5A10    JIB address              801E5C00
       .
       .
       .

> The first SHOW PROCESS command shows the current process to be NETACP. The SHOW SUMMARY command shows the names of the processes that exist. The SET PROCESS command sets the current process to ERRFMT, as shown by the second SHOW PROCESS command. Note that the SET PROCESS command could also have been issued as one of the following:

>     SDA> SET PROCESS/INDEX=5

>     SDA> SET PROCESS/INDEX=801E5C00

Previous | Next | Contents | Index

| privacy and legal statement |
4556PRO_007.HTML