Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ATTACH

COPY

DEFINE

EVALUATE

EXAMINE

EXIT

FORMAT

HELP

READ

REPEAT

SEARCH

SET

SHOW

SPAWN

VALIDATE

CPU Context

Execute Command

Expressions

Initialization

Operation

Process Context

Symbols

System Dump Analyzer — VMS 5.4

Additional information available:

ATTACHCOPYDEFINEEVALUATEEXAMINEEXITFORMAT
HELPREADREPEATSEARCHSETSHOWSPAWN
VALIDATE

CPU ContextExecute CommandExpressionsInitializationOperation
Process ContextSymbols

CPU Context

    In a uniprocessor system there exists only one CPU, 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, the interrupt stack pointer (ISP), and any owned spinlocks.
    When SDA is first invoked to analyze a crash dump, the "SDA current
    CPU" is the CPU that induced the system failure.

    The CPU context will be changed as a result of several different SDA
    commands.  When the CPU context is changed, the "SDA current process"
    is changed to the current process on the "SDA current CPU" in order
    to keep CPU context and process context in synch.  If there is no
    current process on the "SDA current CPU", the "SDA current process"
    is undefined, and no process context information will be available
    until SDA process context is set to a specific process.

    Type HELP PROCESS_CONTEXT for specific information about
    the "SDA current process".

    The following SDA commands will change the "SDA current CPU":

        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 a process is selected that is the current process on a CPU, the
    following commands will change the "SDA current CPU" to that CPU:

        SET PROCESS process_name
        SET PROCESS /INDEX=n
        SHOW PROCESS process_name
        SHOW PROCESS /INDEX=n

    No other SDA commands will affect the "SDA current CPU".

    Note:  When analyzing the running system, the SET CPU and SHOW CPU
           commands are not allowed, since SDA does not have access to
           all the CPU-specific information on the running system.

Execute Command

        @file-spec

    Causes SDA to execute SDA commands contained in a file.  Use this
    command to execute a set of frequently used SDA commands.  This
    command is bound to the at sign (@) character.  The name of the
    file is a required argument.

Expressions

    Some SDA commands allow expressions as command parameters.
    To create expressions, you can use

          Radix operators
          Arithmetic and logical operators
          Precedence operators
          Symbols
          Numerals

    Radix operators specify a given radix for the number that follows
    the operator.  SDA displays hexadecimal numbers with leading zeros
    and displays decimal numbers with leading spaces.

        ^X      Hexadecimal (default)
        ^O      Octal
        ^D      Decimal

    Unary operators

        #       Logical NOT of value
        +       Assigns positive value (default)
        -       Assigns negative value
        @       Uses contents of location
        G       Adds ^X80000000 to value (system space)
        H       Adds ^X7FFE0000 to value (control region)

    Binary operators

        +       Addition
        -       Subtraction
        &       Logical AND
        !       Logical OR
        \       Logical XOR
        *       Multiplication
        /       Division
        @       Arithmetic shift

        Logical AND, logical OR, logical XOR, multiplication, division, and
        arithmetic shifting are performed before addition and subtraction.

    Precedence operators

        Parentheses control the evaluation of all operations.  Expressions
        enclosed in parentheses are evaluated first.  SDA evaluates nested
        parenthetical expressions from the innermost to the outermost pairs
        of parentheses.

    Symbols

        Symbols are composed of up to 31 letters and numbers, and
        can include the dollar sign and underscore characters.  When you
        invoke SDA, it copies the global symbols from SYS.STB, the system's
        symbol table.  You can add other symbols to SDA's symbol table by
        using the DEFINE and READ commands.  SDA also predefines certain
        symbols, some of which follow:

        .       Current location
        G       ^X80000000 (system space)
        H       ^X7FFE0000 (control region)
        R0-R11  General registers
        AP      Argument pointer
        FP      Frame pointer
        SP      Stack pointer
        PC      Program counter
        PSL     Processor status longword

        For a complete list of SDA predefined symbols, type HELP SYMBOLS

Initialization

    When you invoke SDA, by using the DCL commands ANALYZE/SYSTEM or
    ANALYZE/CRASH, SDA will first execute commands from an initialization
    file if one exists, before prompting the user for commands. The
    initialization file is commonly used to read in symbol tables and
    define keys for SDA commands.

    First, SDA searches for an initialization file using the logical name
    SDA$INIT.  If this file is not found, then SDA searches for the file
    SYS$LOGIN:SDA.INIT.  If no initialization file is found, or after the
    initialization file SDA commands have been executed, SDA starts
    accepting interactive user commands from the "SDA>" prompt.

Operation

    You execute the System Dump Analyzer program by means of commands.
    SDA reads these commands from SYS$INPUT, which can be your terminal
    or a command file.  You can send the output to a file or to your
    terminal.

    Any of the following commands will invoke SDA:

        $ ANALYZE/CRASH_DUMP dump_file
        $ ANALYZE/SYSTEM
        $ RUN SYS$SYSTEM:SDA

    When a fatal BUGCHECK error causes the system to crash, the system
    writes the current state of the hardware registers and all physical
    memory to a contiguous file called SYSDUMP.DMP in the SYSEXE account
    on the system disk.  Alternatively, the system's paging file may be
    specified as the destination of the dump information instead of
    SYSDUMP.DMP. This is useful on systems that have constrained disk space.

    Note that pages currently in the paging file (paged out) are not saved
    because the paging file is too large.  Although these pages are lost
    from the crash dump, the effect on debugging will be minimal because
    most pages relating to the crash are still in physical memory when
    the crash occurs, and are thus saved in the dump file.  Of course, if
    the paging file is used as a dump file, the pages that are there are
    wiped out.

    It is recommended that the system manager set up the system-startup file
    so that SDA is always run during system startup.  When executed at this
    time, SDA first checks to see if the system has just crashed.  If so,
    SDA executes the SDA commands in the system's startup-command file.
    If the system has not just crashed, SDA exits.

    The following example shows the SDA commands typically included in the
    system's startup file.  The most important of these is the COPY
    command, which copies the dump file to another file.  This operation
    is recommended because the system always overwrites this file in the event
    of a crash, and the record of the previous crash is lost unless another
    copy exists.  Furthermore, if the paging file was used as the dump file,
    the pages that contain the dump information are not available for paging
    until they are explicitly released by the COPY command.

        $ !
        $ !  Invoke the System Dump Analyzer if the system just crashed
        $ !
        $ ANALYZE/CRASH_DUMP SYS$SYSTEM:SYSDUMP
        SET OUTPUT LPA0:SYSDUMP.LIS     ! Make listing file
        SHOW CRASH                      ! Display crash information
        SHOW STACK                      ! Show current operating stack
        SHOW SUMMARY                    ! List all active processes
        SHOW PROCESS/PCB/PHD/REGISTERS  ! Display current process
        SHOW SYMBOLS/ALL                ! Print the system symbol table
        COPY SYS$SYSTEM:SAVEDUMP.DMP    ! Save dump file for later
        EXIT

    If you need more information on the crash, you can execute SDA
    interactively or add SDA commands to the startup file.

Process Context

    In a uniprocessor system there are two concepts related to SDA process
    context -- the process that is current on the CPU, and the process in
    whose context process-specific SDA commands will be interpreted.
    Either these two processes are the same, or they are not.  However,
    for a multiprocessor system with more than one active CPU, the notion
    of SDA process context changes to provide a way of displaying
    information relevant to a specific process both when the process
    is current on some processor, and when the process is not.

    The SDA process context will be changed as a result of several
    different SDA commands.  When the "SDA current process" is changed to
    the current process on some CPU, the "SDA current CPU" is changed to
    that CPU in order to keep CPU context and process context in synch.
    When the "SDA current process" is changed to a process which is not
    current on any processor, the "SDA current CPU" is not changed.  When
    the SDA CPU context is changed to a CPU which has no current process,
    the "SDA current process" is undefined, and no process context
    information will be available until SDA process context is set to a
    specific process.  Type HELP CPU_CONTEXT for specific information
    about the "SDA current CPU".

    The following SDA commands will change the "SDA current process":

        SET PROCESS process_name        ! Changes the "SDA current process"
                                        ! to process_name

        SET PROCESS /INDEX=n            ! Changes the "SDA current process"
                                        ! to the process with index n

        SHOW PROCESS process_name       ! Changes the "SDA current process"
                                        ! to process_name

        SHOW PROCESS /INDEX=n           ! Changes the "SDA current process"
                                        ! to the process with index n

    The following commands will change the SDA process context if the
    "SDA current process" is not the current process on the selected CPU:

        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 will affect the "SDA current process".

    Note:  When analyzing the running system, CPU context is not used
           because all the CPU-specific information may not be available.

Symbols

    Symbols are composed of up to 31 letters and numbers, and
    can include the dollar sign ($) and underscore (_) characters.  When
    you invoke SDA, it reads in the global symbols from SYS.STB, the system's
    symbol table, and from REQSYSDEF.STB, a required subset of the symbols
    in the file SYSDEF.STB.  You can add other symbols to SDA's symbol table
    by using the DEFINE and READ commands.  SDA also predefines the following
    list of symbols which can be used in expressions:

        .       Current location
        G       ^X80000000 (system space)
        H       ^X7FFE0000 (control region)

        R0-R11  General registers
        AP      Argument pointer
        FP      Frame pointer
        SP      Stack pointer
        PC      Program counter
        PSL     Processor status longword

        KSP     Kernel stack pointer
        ESP     Executive stack pointer
        SSP     Supervisor stack pointer
        USP     User stack pointer

        P0BR    P0 Base Register
        P0LR    P0 Length Register
        P1BR    P1 Base Register
        P1LR    P1 Length Register

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026