HP 3000 Manuals

HPSETDUMP intrinsic [ System Debug Reference Manual ] MPE/iX 5.0 Documentation


System Debug Reference Manual

HPSETDUMP intrinsic 

Arms a call to Debug which takes place during abnormal process
termination.

Callable from:  NM

Syntax 

     HPSETDUMP (status, cmdstr);

Parameters 

status           32-bit signed integer (optional) 

                 The status returned by the HPSETDUMP intrinsic call.
                 The variable is a record containing two 16-bit fields,
                 with the error number in the high-order 16 bits and the
                 intrinsic subsystem number in the low-order 16-bits.

cmdstr           character array (optional) 

                 A packed array of characters (up to 255 bytes) that
                 contains the DEBUG commands to be executed if the
                 process aborts.  The first character in the array is
                 recognized as the command delimiter.  The last character
                 in the command string must be immediately followed by
                 the same delimiter.

Discussion 

The HPSETDUMP intrinsic enables automatic execution of a set of Debug
commands when a process terminates abnormally (aborts).  This intrinsic
affects the current process, child process, and any generation grandchild
processes subsequently created by the calling process.  That is, the
Setdump attribute and cmdstr is inherited by any new child process and
all generations thereafter.

Debug executes the commands in cmdstr and sends the output to the
standard list file ($STDLIST). Any commands which require input generate
an error message.

If the process that aborts is being run from a job, the process
terminates after executing the command string.  If the process is being
run from a session, then after the specified command string has been
executed, Debug stops to accept interactive commands with I/O performed
at the user terminal, contingent upon the following requirements:

 *  The abort did not occur while in system code, and

 *  The process entered the abort code through a native mode interrupt.
    Such aborts are typically caused by arithmetic and code-related traps
    (refer to the XARITRAP and XCODETRAP intrinsics).


NOTE CM programs usually fail these tests.
Once Debug accepts interactive input, the user is free to enter any Debug command. The user may choose to resume the process or have it terminate (see the CONTINUE command in chapter 4). If the cause of the abort is a stack overflow, the command list is ignored and a stack trace is sent to $STDLIST, after which the process is terminated with no interactive debugging allowed. Refer to the MPE XL Intrinsics Reference Manual (32650-90028) for additional discussion of this intrinsic. Condition Codes This intrinsic does not return meaningful condition code values. Status information is returned in the optional status parameter described above. Example Assume that a file called ABORTCMD contains a set of Debug commands to be used when a process abort occurs. A process abort in the following procedure opens a list file, performs a stack trace, executes the commands from the use file, and closes the list file: PROCEDURE myproc{}; VAR status : integer; debug_cmds : string[255]; BEGIN debug_cmds := '\list errfile;tr,dual;use abortcmd;list close\'; hpsetdump(status, debug_cmds); IF (status <> 0) THEN error_routine(status, 'HPSETDUMP'); . . <code in this area is protected with the "setdump" facility> . hpresetdump(status); IF (status <> 0) THEN error_routine(status, 'HPRESETDUMP'); END;


MPE/iX 5.0 Documentation