Updated: 11 December 1998 |
OpenVMS VAX System Dump Analyzer Utility Manual
Previous | Contents | Index |
In a uniprocessor system only one CPU exists, and the concept of SDA CPU context is not an issue. However, for a multiprocessor system with more than one active CPU, SDA must maintain an idea of CPU context to provide a way of displaying information bound to a specific CPU, such as the reason for the bugcheck exception, the currently executing process, the current IPL, the contents of CPU registers, and any owned spin locks. When you first invoke SDA to analyze a crash dump, the "SDA current CPU" is the CPU that induced the system failure.
Changing the CPU Context
You can use several SDA commands to change the CPU context. When you change the CPU context, the "SDA current process" is changed to the current process on the "SDA current CPU" to synchronize CPU context and process context. If no current process is on the "SDA current CPU," the "SDA current process" is undefined; no process context information will be available until you set SDA process context to a specific process.
Type HELP PROCESS_CONTEXT for specific information about the "SDA current process."
The following SDA commands change the "SDA current CPU":
Command | Description |
---|---|
SET CPU cpu_id | Changes the "SDA current CPU" to CPU cpu_id |
SHOW CPU cpu_id | Changes the "SDA current CPU" to CPU cpu_id |
SHOW CRASH | Changes the "SDA current CPU" to the CPU that induced the system failure |
If you select a process that is the current process on a CPU, the following commands change the "SDA current CPU" to that CPU:
No other SDA commands affect the "SDA current CPU."
When you analyze the running system, you cannot use the SET CPU and SHOW CPU commands because SDA does not have access to all the CPU-specific information about the running system. |
In a uniprocessor system, process context might be the process that is current on the CPU or the process in whose context process-specific SDA commands are interpreted. For a multiprocessor system with more than one active CPU, however, the meaning of "SDA process context" changes so that it includes a way to display information relevant to a specific process both when the process is current on a processor and when the process is not.
You can use several SDA commands to change SDA process context. Following is a list of the results of some of these changes:
Type HELP CPU_CONTEXT for specific information about the "SDA current CPU."
The following SDA commands change the "SDA current process":
Command | Description |
---|---|
SET PROCESS name | Changes the "SDA current process" to the named process |
SET PROCESS /INDEX=n | Changes the "SDA current process" to the process with index n |
SHOW PROCESS name | Changes the "SDA current process" to the named process |
SHOW PROCESS /INDEX=n | Changes the "SDA current process" to the process with index n |
The following commands change the SDA process context if the "SDA current process" is not the current process on the selected CPU:
Command | Description |
---|---|
SET CPU cpu_id | Changes the "SDA current process" to the current process on CPU cpu_id |
SHOW CPU cpu_id | Changes the "SDA current process" to the current process on CPU cpu_id |
SHOW CRASH | Changes the "SDA current process" to the current process on the CPU that induced the system failure |
No other SDA commands affect the "SDA current process."
When you analyze the running system, CPU context is not used because all the CPU-specific information might not be available. |
Changing the SDA CPU Context
When you invoke SDA to analyze a crash dump from a multiprocessing system with more than one active CPU, SDA maintains a second dimension of context---its CPU context---that allows it to display certain processor-specific information, such as the reason for the bugcheck exception, the currently executing process, the current IPL, the contents of processor-specific registers, the interrupt stack pointer (ISP), and the spin locks owned by the processor. When you invoke SDA to analyze a multiprocessor's crash dump, its CPU context defaults to that of the processor that induced the system failure.3
You can change the SDA CPU context by using any of the following commands:
Changing CPU context involves an implicit change in process context in either of the following ways:
Likewise, 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 automatically changes its CPU context to that of the CPU on which that process is current. The following commands can have this effect if the name or index number (nn) refers to a current process:
3 When you are analyzing a running system, CPU context is not accessible to SDA. Therefore, the SET CPU and SHOW CPU commands are not permitted. |
The following sections describe the format of SDA commands and the
expressions you can use with SDA commands.
7.1 General Command Format
SDA uses a command format similar to that used by the DCL interpreter. You issue commands in this general format:
command-name[/qualifier...] [parameter][/qualifier...] [!comment] |
where:
command-name | Is an SDA command. Each command tells the utility to perform a function. Commands can consist of one or more words, and can be abbreviated to the number of characters that make the command unique. For example, SH stands for SHOW and SE stands for SET. |
/qualifier | Modifies the action of an SDA command. A qualifier is always preceded by a slash (/). Several qualifiers can follow a single parameter or command name, but a slash must precede each. You can abbreviate qualifiers to the shortest string of characters that uniquely identifies the qualifier. |
parameter |
Is the target of the command. For example, SHOW PROCESS RUSKIN tells
SDA to display the context of the process RUSKIN. The command EXAMINE
80104CD0;40 displays the contents of 40 bytes of memory, beginning with
location 80104CD0.
When you supply part of a file specification as a parameter, SDA assumes default values for the omitted portions of the specification. The default device SYS$DISK and default directory are those specified in your most recent SET DEFAULT command. See the OpenVMS DCL Dictionary for a description of the DCL command SET DEFAULT. |
!comment | Consists of text that describes the command, but this text is not actually part of the command. Comments are useful for documenting SDA command procedures. When executing a command, SDA ignores the exclamation point (!) and all characters that follow it on the same line. |
You can use expressions as parameters for some SDA commands, such as SEARCH and EXAMINE. To create expressions, you can use any of the following elements:
The following sections describe elements other than numerals.
7.2.1 Radix Operators
Radix operators determine which numeric base SDA uses to evaluate expressions. You can use one of three radix operators to specify the radix of the numeric expression that follows the operator:
The default radix is hexadecimal. SDA displays hexadecimal numbers with
leading zeros and decimal numbers with leading spaces.
7.2.2 Arithmetic and Logical Operators
There are two types of arithmetic and logical operators, both of which are listed in Table SDA-8.
In evaluating expressions containing binary operators, SDA performs logical AND, OR, and XOR operations, and multiplication, division, and arithmetic shifting before addition and subtraction. Note that the SDA arithmetic operators perform integer arithmetic on 32-bit operands.
Operator | Action |
---|---|
Unary Operators | |
# | Performs a logical NOT of the expression |
+ | Makes the value of the expression positive |
-- | Makes the value of the expression negative |
@ | Evaluates the following expression as a virtual address, then uses the contents of that address as value |
G | Adds 80000000 16 to the value of the expression 1 |
H | Adds 7FFE0000 16 to the value of the expression 2 |
Binary Operators | |
+ | Addition |
-- | Subtraction |
* | Multiplication |
& | Logical AND |
| | Logical OR |
\ | Logical XOR |
/ | Division 3 |
@ | Arithmetic shifting |
SDA uses parentheses as precedence operators.
Expressions enclosed in parentheses are evaluated first. SDA evaluates
nested parenthetical expressions from the innermost to the outermost
pairs of parentheses.
7.2.4 Symbols
Names of symbols can contain from 1 to 31 alphanumeric characters and can include the dollar sign ($) and underscore (_) characters. Symbols can take values from --7FFFFFFF16 to 7FFFFFFF16.
By default, SDA copies symbols into its symbol table from the files SYS$SYSTEM:SYS.STB and SYS$SYSTEM:REQSYSDEF.STB. To add more symbols to the symbol table, you can use the following SDA commands:
In addition, SDA provides the symbols described in Table SDA-9.
Symbol | Meaning |
---|---|
. (period) | Current location |
2P_CDDB | Address of alternate CDDB for MSCP-served device 1 |
2P_UCB | Address of alternate UCB for dual-pathed device 1 |
AMB | Associated mailbox UCB pointer 1 |
AP | Argument pointer 2 |
CDDB | Address of class driver descriptor block for MSCP-served device 1 |
CLUSTRLOA | Base address of loadable VAXcluster code |
CRB | Address of channel request block 1 |
DDB | Address of device data block 1 |
DDT | Address of driver dispatch table 1 |
nnDRIVER | Base address of a driver prologue table (DPT); such a symbol exists for each loaded device driver in the system 3 |
ESP | Executive stack pointer 2 |
FP | Frame pointer 2 |
FPEMUL | Base address of the code that emulates floating-point instructions |
G | 80000000 16, the base address of system space |
H | 7FFE0000 16 |
IRP | Address of I/O request packet 1 |
JIB | Job information block |
KSP | Kernel stack pointer 2 |
LNM | Address of logical name block for mailbox 1 |
MCHK | Address within loadable CPU-specific routines |
MSCP | Address of loadable MSCP server code |
ORB | Address of object rights block 1 |
P0BR | Base register for the program region (P0) 2 |
P0LR | Length register for the program region (P0) 2 |
P1BR | Base register for the control region (P1) 2 |
P1LR | Length register for the control region (P1) 2 |
PC | Program counter 2 |
PCB | Process control block |
PDT | Address of port descriptor table 1 |
PHD | Process header |
PSL | Processor status longword 2 |
R0 through R11 | General registers 2 |
RMS | Base address of the RMS image |
RWAITCNT | Resource wait count for MSCP-served device 1 |
SB | Address of system block 1 |
SCSLOA | Base address of loadable common SCS services |
SP | Current stack pointer of a process 2 |
SSP | Supervisor stack pointer 2 |
SYSLOA | Base address of loadable processor-specific system code |
TMSCP | Address of loadable TMSCP server code |
UCB | Address of unit control block 1 |
USP | User stack pointer 2 |
VCB | Address of volume control block for mounted device 1 |
When SDA displays an address, it displays that address both in hexadecimal and as a symbol, if possible. If the address is within FFF16 of the value of a symbol, SDA displays the symbol plus the offset from the value of that symbol to the address. If more than one symbol's value is within FFF16 of the address, SDA displays the symbol whose value is the closest. If no symbols have values within FFF16 of the address, SDA displays no symbol. (For an example, see the description of the SHOW STACK command.)
Previous | Next | Contents | Index |
Copyright © Compaq Computer Corporation 1998. All rights reserved. Legal |
4556PRO_002.HTML
|