DBG$HELP.HLB  —  DEBUG  CALL  Description
    The CALL command is one of the four debugger commands that
    can be used to execute your program (the others are GO, STEP,
    and EXIT). The CALL command enables you to execute a routine
    independently of the normal execution of your program. The CALL
    command executes a routine whether or not your program actually
    includes a call to that routine, as long as the routine was
    linked with your program.

    When you enter a CALL command, the debugger takes the following
    actions. For more information, see the qualifier descriptions.

    1. Saves the current values of the general registers.

    2. Constructs an argument list.

    3. Executes a call to the routine specified in the command and
       passes any arguments.

    4. Executes the routine.

    5. Displays the value returned by the routine in the return
       status register. By convention, after a called routine has
       executed, register R0 contains the function return value
       (if the routine is a function) or the procedure completion
       status (if the routine is a procedure that returns a status
       value). If a called procedure does not return a status value
       or function value, the value in R0 might be meaningless, and
       the "value returned" message can be ignored.

    6. Restores the values of the general registers to the values
       they had just before the CALL command was executed.

    7. Issues the prompt.

    The debugger assumes that the called routine conforms to the
    procedure calling standard (see the OpenVMS Calling Standard).
    However, the debugger does not know about all the argument-
    passing mechanisms for all supported languages. Therefore,
    you might need to specify how to pass parameters, for example,
    use CALL SUB1(%VAL X) rather than CALL SUB1(X). For complete
    information about how arguments are passed to routines, see your
    language documentation.

    When the current language is C or C++, the CALL command by
    default now passes arguments by value rather than by reference.
    In addition, you can now pass the following arguments without
    using a passing mechanism lexical (such as %REF or %VAL):

    o  Routine references

    o  Quoted strings (treated as %REF strings)

    o  Structures, records, and objects

    o  Floating-point parameters by value in F_, D_, G_, S_, and T_
       floating format by dereferencing a variable of that type.

    If the routine contains parameters that are not read-only, the
    values assigned to parameters may not be visible, and access
    to values is unreliable. This is because the debugger adjusts
    parameter values in an internal argument list, not the program
    argument list. To examine changing values, consider using static
    variables instead of parameters.

    The CALL command converts all floating-point literals to F_
    floating format for VAX and Alpha systems and T_floating format
    for Integrity servers.

    On Alpha, passing a floating-point literal in a format other than
    F_floating is not supported, as shown in the example below.

    A common debugging technique at an exception breakpoint
    (resulting from a SET BREAK/EXCEPTION or STEP/EXCEPTION command)
    is to call a dump routine with the CALL command. When you enter
    the CALL command at an exception breakpoint, any breakpoints,
    tracepoints, or watchpoints that were previously set within the
    called routine are temporarily disabled so that the debugger does
    not lose the exception context. However, such eventpoints are
    active if you enter the CALL command at a location other than an
    exception breakpoint.
Close Help