OpenVMS VAX System Dump Analyzer Utility Manual
@ (Execute Procedure)
Causes SDA to execute SDA commands contained in a file. Use this
command to execute a set of frequently used SDA commands.
Format
@filespec
Parameter
filespec
Name of a file that contains the SDA commands to be executed. The
default file type is .COM.
Example
The Execute Procedure command executes the following commands, as
contained in a file named USUAL.COM:
SET OUTPUT LASTCRASH.LIS
SHOW CRASH
SHOW PROCESS
SHOW STACK
SHOW SUMMARY
|
This command procedure first makes the file LASTCRASH.LIS the
destination for output generated by subsequent SDA commands. Next, the
command procedure sends to the file information about the crash and its
context, a description of the process executing at the time of the
process, the contents of the stack on which the crash occurred, and a
list of the processes active on the CPU that crashed.
An EXIT command within a command procedure terminates the procedure at
that point, as would an end-of-file marker.
You cannot nest command procedures.
ATTACH
Switches control of your terminal from your current process to another
process in your job.
Format
ATTACH [/PARENT] process-name
Parameter
process-name
Name of the process to which you want to transfer control.
Qualifier
/PARENT
Transfers control of the terminal to the parent process of the current
process. When you specify this qualifier, you cannot specify the
process-name parameter.
Examples
This ATTACH command attaches the terminal to the parent process of the
current process.
This ATTACH command attaches the terminal to a process named DUMPER in
the same job as the current process.
COPY
Copies the contents of the dump file to another file.
Format
COPY output-filespec
Parameter
output-filespec
Name of the device, directory, and file to which SDA copies the dump
file. The default file specification is:
SYS$DISK:[default-dir]filename.DMP
|
SYS$DISK and [default-dir] represent the disk and directory
specified in your last SET DEFAULT command. You must supply at least
the file name.
Description
Each time the system fails, it copies the contents of physical memory
and the hardware context of the current process (as directed by the
DUMPSTYLE parameter) into the file SYS$SYSTEM:SYSDUMP.DMP (or the
paging file), overwriting its current contents. If you do not save this
crash dump elsewhere, it will be overwritten the next time the system
fails.
The COPY command allows you to preserve a crash dump by copying its
contents to another file. It is generally useful to invoke SDA during
system initialization (from within SYS$MANAGER:SYSTARTUP_VMS.COM) to
execute the COPY command. This ensures that a copy of the dump file is
made each time the system fails.
The COPY command does not affect the contents of SYS$SYSTEM:SYSDUMP.DMP.
If you are using the paging file (SYS$SYSTEM:PAGEFILE.SYS) as the dump
file instead of SYSDUMP.DMP, you can use the COPY command to explicitly
release the blocks of the paging file that contain the dump, thus
making them available for paging. Although the copy operation succeeds
nonetheless, the release operation requires that your process have
change-mode-to-kernel (CMKRNL) privilege. Once the dump pages have been
released from the paging file, the dump information in those pages
might be lost. You need to analyze the copy of the dump created by the
COPY command.
Example
|
SDA> COPY SYS$CRASH:SAVEDUMP
|
The COPY command copies the dump file into the file
SYS$CRASH:SAVEDUMP.DMP.
DEFINE
Assigns a value to a symbol or associates an SDA command with a
terminal key.
Format
DEFINE [symbols-name [=] expression| /KEY key-name command
|[/qualifier....]]
Parameters
symbol-name
Name, containing from 1 to 31 alphanumeric characters, that identifies
the symbol. See Section 7.2.4 for a description of SDA symbol syntax and
a list of default symbols.
expression
Definition of the symbol's value. See Section 7.2 for a discussion of
the components of SDA expressions.
key-name
Name of the key to be defined. You can define the following keys under
SDA:
Key Name |
Key Designation |
PF1
|
LK201, VT100, VT52 Red
|
PF2
|
LK201, VT100, VT52 Blue
|
PF3
|
LK201, VT100, VT52 Black
|
PF4
|
LK201, VT100
|
KP0...KP9
|
Keypad 0--9
|
PERIOD
|
Keypad period
|
COMMA
|
Keypad comma
|
MINUS
|
Keypad minus
|
ENTER
|
Keypad Enter
|
UP
|
Up arrow
|
DOWN
|
Down arrow
|
LEFT
|
Left arrow
|
RIGHT
|
Right arrow
|
E1
|
LK201 Find
|
E2
|
LK201 Insert Here
|
E3
|
LK201 Remove
|
E4
|
LK201 Select
|
E5
|
LK201 Prev Screen
|
E6
|
LK201 Next Screen
|
HELP
|
LK201 Help
|
DO
|
LK201 Do
|
F7...F20
|
LK201 function keys
|
command
SDA command the key is to be defined as. The command must be enclosed
in quotation marks (" ").
Qualifiers
/ECHO
/NOECHO
Determines whether the equivalence string is displayed on the terminal
screen after the defined key has been pressed. The /NOECHO qualifier
functions only with the /TERMINATE qualifier. The default is /ECHO.
/IF_STATE=(state-name,...)
/NOIF_STATE
Specifies a list of one or more states, one of which must be in effect
for the key definition to be in effect. States are placed in effect by
the /SET_STATE qualifier, which is described in this section.
The state-name is an alphanumeric string, enclosed in
quotation marks (" "). By including several state names, you can define
a key to have the same function in all the specified states. If you
specify only one state name, you can omit the parentheses.
If you omit the /IF_STATE qualifier---or use /NOIF_STATE---the current
state is used.
/KEY
Defines a key as an SDA command. You need only to press the defined key
and the Return key to issue the command. If you use the /TERMINATE
qualifier as well, you do not need to press the Return key.
When you define some keys as SDA commands, you must press Ctrl/V first
before those keys will execute the commands. This is because of the
escape sequences the keys generate and the way the terminal driver
handles those escape sequences. The following keys, when defined as SDA
commands, must be preceded by a Ctrl/V:
Key Name |
Key Designation |
LEFT
|
Left arrow
|
RIGHT
|
Right arrow
|
F7...F14
|
LK201 function keys
|
/SET_STATE=state-name
Causes the key being defined to cause a key state change rather than
issue an SDA command. When you use the /SET_STATE qualifier, you supply
the name of a key state in place of the key-name
parameter. In addition, you must define the command
parameter as a pair of quotation marks (" ").
The key state can be any name you think appropriate. For example, you
can define the PF1 key to set the state to GOLD and use the
/IF_STATE=GOLD qualifier to allow two definitions for other keys, one
in the GOLD state and one in the non-GOLD state.
/TERMINATE
/NOTERMINATE
Causes the key definition to include termination of the command, which
causes SDA to execute the command when the defined key is pressed.
Therefore, you do not have to press the Return key after you press the
defined key if you specify the /TERMINATE qualifier.
Description
The DEFINE command causes SDA to evaluate an expression and then assign
its value to a symbol. Both the DEFINE and EVALUATE commands perform
computations in order to evaluate expressions. DEFINE adds symbols to
the SDA symbol table but does not display the results of the
computation. EVALUATE displays the results of the computation but does
not add symbols to the SDA symbol table.
The DEFINE/KEY command associates an SDA command with the specified
key, in accordance with any specified qualifiers.
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 SDA.
Examples
#1 |
SDA> DEFINE BEGIN = 80058E00
SDA> DEFINE END = 80058E60
SDA> EXAMINE BEGIN:END
|
In this example, DEFINE defines two addresses, called BEGIN and END.
These symbols serve as reference points in memory, defining a range of
memory locations that the EXAMINE command can inspect.
#2 |
SDA> DEFINE NEXT = @PC
SDA> EXAMINE/INSTRUCTION NEXT
NEXT: MOVL @00(R6),R0
|
Symbol NEXT defines the address contained in the program counter so
that you can use the symbol in an EXAMINE/INSTRUCTION command.
#3 |
SDA> DEFINE VEC SCH$GL_PCBVEC
SDA> EXAMINE VEC
VEC: 80B7D31C ".O.."
|
After the value of global symbol SCH$GL_PCBVEC has been assigned to the
symbol VEC, VEC is used to examine the memory location or value
represented by the global symbol.
#4 |
SDA> DEFINE COUNT = 7
SDA> DEFINE RESULT = COUNT * COUNT
SDA> EVALUATE RESULT
Hex = 00000031 Decimal = 49 PR$_SBIS
RESULT
|
The first DEFINE command assigns the value 7 to symbol COUNT. The
second DEFINE command defines RESULT to be the result of the evaluation
of an arithmetic expression using the symbol COUNT. Evaluation of
RESULT shows that system symbol PR$_SBIS has an equivalent value.
#5 |
SDA> DEFINE/KEY PF1 "SHOW STACK"
SDA> [PF1] SHOW STACK [RETURN]
Process stacks (on CPU 00)
-------------------------
Current operating stack (KERNEL):
7FFE8DD4 00001703 SGN$C_MAXPGFL+703
7FFE8DD8 80127920
7FFE8DDC 00000000
7FFE8DE0 00000000
7FFE8DE4 00000000
7FFE8DE8 00000000
7FFE8DEC 7FF743E4
7FFE8DF0 7FF743CC
SP => 7FFE8DF4 8000E646 EXE$CMODEXEC+1EE
7FFE8DF8 7FFEDE96 SYS$CMKRNL+006
7FFE8DFC 03C00000
|
The DEFINE/KEY command defines PF1 as the SHOW STACK command. When you
press the PF1 key, SDA displays the command and waits for you to press
the Return key.
#6 |
SDA> DEFINE/KEY/TERMINATE PF1 "SHOW STACK"
SDA> [PF1] SHOW STACK
Process stacks (on CPU 00)
-------------------------
Current operating stack (KERNEL):
.
.
.
|
The DEFINE/KEY command defines PF1 as the SHOW STACK command. Also
specifying the /TERMINATE qualifier causes SDA to execute the SHOW
STACK command without waiting for you to press the Return key.
#7 |
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 command defines PF1 as a key that sets command state
GREEN. The trailing pair of quotation marks is required syntax,
indicating that no command is to be executed when you press this key.
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, you must press PF1 before pressing PF3 to
issue the SHOW STACK command. The /TERMINATE qualifier causes the
command to execute as soon as you press the PF3 key.
EVALUATE
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.
Format
EVALUATE {/CONDITION_VALUE|/PSL|/PTE|/SYMBOLS} expression
Parameter
expression
SDA expression to be evaluated. Section 7.2 describes the components
of SDA expressions.
Qualifiers
/CONDITION_VALUE
Displays the message that the $GETMSG system service obtains for the
value of the expression.
/PSL
Evaluates the specified expression in the format of a processor status
longword.
/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 that are 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 such symbols.
Description
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 if
the offset is small enough for the selected symbol to be considered
useful.
Examples
#1 |
SDA> EVALUATE -1
Hex = FFFFFFFF Decimal = -1 PR$_XSID_N8NNN
|
The 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.
#2 |
SDA> EVALUATE 1
Hex = 00000001 Decimal = 1 ACP$V_SWAPGRP
ACP$V_WRITECHK
EVT$_EVENT
|
The 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.
#3 |
SDA> DEFINE TEN = A
SDA> EVALUATE TEN
Hex = 0000000A Decimal = 10 EXE$V_FATAL_BUG
SGN$C_MINWSCNT
TEN
|
This 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.
#4 |
SDA> EVALUATE (((TEN * 6) + (-1/4)) + 6)
Hex = 00000042 Decimal = 66
|
This 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.
#5 |
SDA> EVALUATE/CONDITION 80000018
%SYSTEM-W-EXQUOTA, exceeded quota
|
This example shows the output of an EVALUATE/CONDITION command.
#6 |
SDA> EVALUATE/PSL 04080009
CMP TP FPD IS CURMOD PRVMOD IPL DV FU IV T N Z V C
0 0 0 1 KERN KERN 08 0 0 0 0 1 0 0 1
|
SDA interprets the entered value 04080009 as though it were a processor
status longword (PSL) and displays the resulting field values of that
longword.
#7 |
SDA> EVALUATE/PTE ABCDFFEE
|
|31 28|27 24|23 20|19 16|15 12|11 8|7
| | | | | | |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-->
|1 | 0 1 0 1 |0 |--| 1 1 |--| 0| 0DFFEE
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-->
Vld Prot= EW M Own=U W Page Frame Number
Page is Active and Valid
|
The 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.
EXAMINE
Displays either the contents of a location or range of locations in
physical memory, or the contents of a register. You can use location
parameters to display specific locations or use qualifiers to display
entire process and system regions of memory.
Format
EXAMINE [/qualifier[,...]] [location]
Parameter
location
Location in memory to be examined. You can represent a location by any
valid SDA expression (see Section 7.2). To examine a range of
locations, use the following format:
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 either of the following:
- The process that was executing at the time the system failed (if
you are examining a crash dump)
- 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 4. Use of the /INSTRUCTION
qualifier increases the default address as appropriate to the
translation of the instruction. To examine memory locations of other
processes, you must use the SET PROCESS command.
Qualifiers
/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 contents of the specified range of memory locations into
MACRO instruction format. If more than 16 bytes are specified in the
range, /INSTRUCTION processing might skip some bytes at the beginning
of the range to ensure that SDA is properly synchronized with the start
of each instruction. You can override this synchronization by
specifying the /NOSKIP qualifier.
The length of the instruction displayed varies according to the opcode
and addressing mode. If SDA cannot decode a memory location, it issues
the following message:
%SDA-E-NOINSTRAN, cannot translate instruction
|
When you use this qualifier with the EXAMINE command, SDA calculates
subsequent default addresses by adding the length of the last
instruction, including all operands, to the last address examined.
/NOSKIP
Causes the EXAMINE command not to skip any bytes in the range when
translating the contents of memory into MACRO instructions. The /NOSKIP
qualifier causes the execution of the /INSTRUCTION qualifier by default.
/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.
/PSL
Examines the specified longword, displaying its contents in the format
of a processor status longword. This qualifier must precede any
parameters used in the command line.
/PTE
Interprets and displays the specified longword 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.
Description
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: 80002119 ".!.."
|
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 : not in physical memory
|
|