HP OpenVMS System Analysis Tools Manual
EXIT
Exits from an SDA display or exits from the SDA utility.
Format
EXIT
Parameters
None.
Qualifiers
None.
Description
If SDA is displaying information on a video display terminal---and if
that information extends beyond one screen---SDA enters display mode
and 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.
See Section 2.6.2 for a description of SDA display mode.
FORMAT
Displays a formatted list of the contents of a block of memory.
Format
FORMAT [/TYPE=block-type] location
[/NOSYMBOLIZE][/PAGE][/PHYSICAL] [/POSITIVE]
Parameter
location
Location of the beginning of the data block. The location can be given
as any valid SDA expression.
Qualifiers
/NOSYMBOLIZE
If /NOSYMBOLIZE is specified, no attempt is made to symbolize the
contents of any field in a structure. This is useful if the loaded
execlet or activated image lists are corrupted, since symbolization
relies on these lists.
/PAGE
If the output of the formatted structure does not fit on one screen,
SDA enters display mode. (For information on this topic, see
Section 2.6.2.) By default, SDA displays the formatted structure
without screen overflow prompts.
/PHYSICAL
Specifies that the location given is a physical address.
/POSITIVE
Symbols that describe negative offsets from the start of the structure
are ignored. By default, all symbols for the block type are processed.
/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 and/or subtype 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.
Description
The FORMAT command performs the following actions:
- 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, up to a quadword per line
- Whenever successive quadword fields with no symbolic name
containing the same value occur, only the first occurence is output.
Ellipses replace all subsequent occurences.
Most OpenVMS control blocks include two bytes that indicate the block
type and/or subtype at offsets 0A16 and 0B16,
respectively. The type and/or subtype associate the block with a set of
symbols that have a common prefix. Each symbol's name describes a field
within the block, and the value of the symbol represents the offset of
the field within the block.
If the type and/or subtype bytes contain a valid block type/subtype
combination, SDA retrieves the symbols associated with that type of
block (see $DYNDEF) and uses their values to format the block.
For a given block type, all associated symbols have the following form:
<block_type>$<field>_<name>
|
where field is one of the following:
B Byte
W Word
L Longword
Q Quadword
O Octaword
A Address
C Constant
G Global Longword
P Pointer
R Structure (variable size)
T Counted ASCII string (up to 31 characters)
|
If SDA cannot find the symbols associated with the block type specified
in the block-type byte or by the /TYPE qualifier, it issues the
following message:
%SDA-E-NOSYMBOLS, no <block type> symbols found to format this block
|
If 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 data structures are contained within
SDA$READ_DIR:SYSDEF.STB. Thus, you would issue the following command:
SDA> READ SDA$READ_DIR:SYSDEF.STB
|
If SDA issues the same message again, try reading additional symbols.
Table 2-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. See the READ command
description for instructions on creating such an object module.
Certain OpenVMS data structures do not contain a block type and/or
subtype. If bytes contain information other than a block
type/subtype---or do not contain a valid block type/subtype--- SDA
either formats the block in a totally inappropriate way, based on the
contents of offsets 0A16 and 0B16, or displays
the following message:
%SDA-E-INVBLKTYP, invalid block type in specified block
|
To format such a block, you must reissue the FORMAT command, using the
/TYPE qualifier to designate a block-type.
The FORMAT command produces a three-column display containing the
following information:
- 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, including symbolization if a suitable symbol exists.
Examples
#1 |
SDA> READ SYSDEF
SDA> format 81475D00
FFFFFFFF.81475D00 UCB$L_FQFL 8104EA58 EXE$GL_FKWAITFL+00078
UCB$L_MB_MSGQFL
UCB$L_RQFL
UCB$W_MB_SEED
UCB$W_UNIT_SEED
FFFFFFFF.81475D04 UCB$L_FQBL 81412038
UCB$L_MB_MSGQBL
UCB$L_RQBL
FFFFFFFF.81475D08 UCB$W_SIZE 0380
FFFFFFFF.81475D0A UCB$B_TYPE 10
FFFFFFFF.81475D0B UCB$B_FLCK 3A
FFFFFFFF.81475D0C UCB$L_ASTQFL 81223888 SYS$DKDRIVER+19A88
UCB$L_FPC
UCB$L_MB_W_AST
UCB$T_PARTNER
.
.
.
|
In this example on an OpenVMS Alpha system, the READ command loads the
symbols from SDA$READ_DIR:SYSDEF.STB into SDA's symbol table. The
FORMAT command displays the data structure that begins at
81475D0016, 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 81475D0C16 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 8104EA5816.
#2 |
SDA> read sysdef
SDA> read/exec
SDA> format 84191D00
FFFFFFFF.84191D00 SPL$L_OWN_CPU 00000000
FFFFFFFF.84191D04 SPL$L_OWN_CNT FFFFFFFF
FFFFFFFF.84191D08 SPL$W_SIZE 0100
FFFFFFFF.84191D0A SPL$B_TYPE 4F
FFFFFFFF.84191D0B SPL$B_SUBTYPE 01
FFFFFFFF.84191D0C SPL$L_SPINLOCK 00000000
FFFFFFFF.84191D10 SPL$L_RANK 00000000
FFFFFFFF.84191D14 SPL$B_IPL 1F
SPL$L_IPL
FFFFFFFF.84191D15 000000
FFFFFFFF.84191D18 SPL$L_RLS_PC 00000000
FFFFFFFF.84191D1C SPL$L_BUSY_WAITS 00000000
FFFFFFFF.84191D20 SPL$L_WAIT_CPUS 00000000
FFFFFFFF.84191D24 SPL$L_WAIT_PC 00000000
FFFFFFFF.84191D28 SPL$Q_SPINS 00000000.00000000
FFFFFFFF.84191D30 SPL$Q_ACQ_COUNT 00000000.00008E08
FFFFFFFF.84191D38 SPL$L_TIMO_INT 000186A0 UCB$M_FLOPPY_MEDIA+006A0
FFFFFFFF.84191D3C SPL$PS_SHARE_ARRAY 00000000
FFFFFFFF.84191D40 SPL$PS_SHARE_LINK 00000000
FFFFFFFF.84191D44 SPL$T_NAME ""
FFFFFFFF.84191D45 000000
FFFFFFFF.84191D48 00000000.00000000
FFFFFFFF.84191D50 SPL$Q_RELEASE_COUNT 00000000.00008E08
FFFFFFFF.84191D58 SPL$Q_HISTORY_BITMASK 00000000.00000000
FFFFFFFF.84191D60 SPL$Q_ABUSE_THRESHOLD 00000000.00000000
FFFFFFFF.84191D68 SPL$Q_FLAGS 00000000.00000000
FFFFFFFF.84191D70 00000000.00000000
... ...
FFFFFFFF.84191D80 SPL$Q_ABUSE_BITMASK 00000000.00000000
FFFFFFFF.84191D88 00000000.00000000
... ...
FFFFFFFF.84191DB8 00000000
FFFFFFFF.84191DBC SPL$L_VEC_INX 00000010
FFFFFFFF.84191DC0 SPL$L_OWN_PC_VEC 8016B7A0 ERL$WAKE_C+00370
FFFFFFFF.84191DC4 8016BF50 ERL$WAKE_C+00B20
FFFFFFFF.84191DC8 8016BF50.8016B7A0
... ...
FFFFFFFF.84191DD8 8016B8C0.8016B7A0
FFFFFFFF.84191DE0 000231E0.00022C20
FFFFFFFF.84191DE8 00023BF0.000238D0
FFFFFFFF.84191DF0 000231E0.00022C20
FFFFFFFF.84191DF8 00023BF0.000238D0
SPL$C_LENGTH
.
.
.
|
In this example on an OpenVMS I64 system, the READ command loads the
symbols from SYSDEF and the loaded executive images into SDA's symbol
table. The FORMAT command displays the data structure that begins at
84191D0016, a spinlock control block (SPL). If a field has
more than one symbolic name, all such names are displayed. Thus, the
field that starts at 84191D1416 has two designations:
SPL$B_IPL and SPL$L_IPL.
The contents of each field appear to the right of the symbolic name of
the field. Thus, the contents of SPL$B_IPL is 1F16.
HELP
Displays information about the SDA utility, its operation, and the
format of its commands.
Format
HELP [topic-name]
Parameter
topic-name
Topic for which you need information. A topic can be an SDA command
name such as ATTACH or COPY or one of the following keywords:
Keyword |
Function |
ANALYZE_Usage
|
Describes the parameters and qualifiers for the ANALYZE/CRASH_DUMP and
ANALYZE/SYSTEM DCL commands
|
CLUE_Info
|
Describes SDA CLUE (Crash Log Utility Extractor)
|
Commands
|
Provides information on specific SDA commands
|
CPU_Context
|
Describes the concept of CPU context as it governs the behavior of SDA
|
Execute
|
Describes the use of @file to execute SDA commands contained in a file
|
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
|
Page_Protections
|
Describes page protections and access for Alpha and I64 systems
|
Process_Context
|
Describes the concept of process context as it governs the behavior of
SDA
|
SDA_Extension_Routines
|
Describes how to write, debug, and invoke an SDA extension and provides
details of all callable routines
|
SDA_Symbols
|
Describes the symbols used by SDA
|
SPL_Info
|
Provides an overview of SDA SPL (Spinlock Tracing Utility)
|
Using_Expressions
|
Describes use of SDA expressions
|
Qualifiers
None.
Description
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 the
features of SDA and those commands and topics for which you can request
help, as follows:
Example
|
SDA> HELP
HELP
The System Dump Analyzer (SDA) allows you to inspect the contents
of memory as saved in the dump taken at crash time or as exists
in a running system. You can use SDA interactively or in batch
mode. You can send the output from SDA to a listing file. You can
use SDA to perform the following operations:
Assign a value to a symbol
Examine memory of any process
Format instructions and blocks of data
Display device data structures
Display memory management data structures
Display a summary of all processes on the system
Display the SDA symbol table
Copy the system dump file
Read global symbols from any object module
Search memory for a given value
Send output to a file or device
For help on performing these functions, use the HELP command and
specify a topic.
Format
HELP [topic-name]
Additional information available:
.
.
.
Topic?
|
MAP
Transforms an address into an offset in a particular image.
Format
MAP address
Parameter
address
Address to be identified.
Qualifiers
None.
Description
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.
If the address is in system space, MAP searches for the specified
address in executive images first. It then checks activated images in
process space to search those images installed using the /RESIDENT
qualifier of the Install utility. Finally, it checks all image-resident
sections in system space.
If the address is in process space, MAP searches the activated images
for the process.
If the address cannot be found, MAP displays the following message:
%SDA-E-NOTINIMAGE, Address not within a system/installed image
|
Examples
#1 |
SDA> MAP G90308
Image Base End Image Offset
SYS$VM
Nonpaged read only 80090000 800ABA00 00000308
|
Examining 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:
.
.
.
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.
#2 |
SDA> MAP G550000
Image Base End Image Offset
SYS$DKDRIVER 80548000 80558000 00008000
|
In this example, the MAP command identifies the address as an offset
into an executive image that is not sliced. The base and end addresses
are the boundaries of the image.
#3 |
SDA> MAP G550034
Image Base End Image Offset
SYS$DUDRIVER
Nonpaged read/write 80550000 80551400 00008034
|
In this example, the MAP command identifies the address as an offset
into an executive image that is sliced. The base and end addresses are
the boundaries of the image section that contains the address of
interest.
#4 |
SDA> MAP GF0040
Image Resident Section Base End Image Offset
MAILSHR 800F0000 80119000 00000040
|
The MAP command identifies the address as an offset into an
image-resident section residing in system space.
#5 |
SDA> MAP 12000
Activated Image Base End Image Offset
MAIL 00010000 000809FF 00002000
|
The MAP command identifies the address as an offset into an activated
image residing in process-private space.
#6 |
SDA> MAP B2340
Compressed Data Section Base End Image Offset
LIBRTL 000B2000 000B6400 00080340
|
The MAP command identifies the address as being within a compressed
data section. When an image is installed with the Install utility using
the /RESIDENT qualifier, the code sections are mapped in system space.
The data sections are compressed into process-private space to reduce
null pages or holes in the address space left by the absence of the
code section. The SHOW PROCESS/IMAGE=ALL display shows how the data has
been compressed; the MAP command searches this information to map an
address in a compressed data section to an offset in an image.
#7 |
SDA> MAP 7FC06000
Shareable Address Data Section Base End Image Offset
LIBRTL 7FC06000 7FC16800 00090000
|
The MAP command identifies the address as an offset into a shareable
address data section residing in P1 space.
#8 |
SDA> MAP 7FC26000
Read-Write Data Section Base End Image Offset
LIBRTL 7FC26000 7FC27000 000B0000
|
The MAP command identifies the address as an offset into a read-write
data section residing in P1 space.
#9 |
SDA> MAP 7FC36000
Shareable Read-Only Data Section Base End Image Offset
LIBRTL 7FC36000 7FC3F600 000C0000
|
The MAP command identifies the address as an offset into a shareable
read-only data section residing in P1 space.
#10 |
SDA> MAP 7FC56000
Demand Zero Data Section Base End Image Offset
LIBRTL 7FC56000 7FC57000 000E0000
|
The MAP command identifies the address as an offset into a demand zero
data section residing in P1 space.
|