User`s guide
How the MACRO Compiler Functions on Different Platforms
2.13 Debugging
• The argument list is homed, and you want to examine an argument that is
less than or equal to the maximum number detected by the compiler (either
by automatic detection or as specified by MAX_ARGS). If the argument
list is homed, $ARGn symbols always point into the homed argument list.
Subsequent arguments will be in longwords following the last defined $ARGn
symbol.
For example, you can examine arguments beyond the eighth argument in a JSB
routine (where the argument list must be homed in the caller), as follows:
DBG> EX $ARG8 ; highest defined $ARGn
.
.
.
DBG> EX .+4 ; next arg is in next longword
.
.
.
DBG> EX .+4 ; and so on
This example assumes that the caller detected at least 10 arguments when
homing the argument list.
To find arguments beyond the last $ARGn symbol in a routine that did not home
the arguments, proceed exactly as in the previous example except substitute EX
.+8 for EX .+4.
2.13.3.2 Additional Arguments That Are Not Easy to Locate
You cannot easily find additional arguments if:
• The argument list is not homed, and $ARGn symbols are defined only as high
as $ARG6 on OpenVMS Alpha and $ARG8 on OpenVMS I64. In this case, the
existing $ARGn symbols will either point to registers or to quadword locations
in the stack frame. In both cases, subsequent arguments cannot be examined
by looking at quadword locations beyond the defined $ARGn symbols.
• The argument list is homed, and you want to examine arguments beyond the
number detected by the compiler. The $ARGn symbols point to the longwords
that are stored in the homed argument list. The compiler only moves as many
arguments as it can detect into this list. Examining longwords beyond the
last argument that was homed will result in examining various other stack
context.
The only way to find the additional arguments in these cases is to examine the
compiled machine code to determine where the arguments reside. Both of these
problems are eliminated if MAX_ARGS is specified correctly for the maximum
argument that you want to examine.
2.13.4 Using VAX and Alpha Register Names on OpenVMS I64
For convenience, the MACRO compiler on OpenVMS I64 defines symbols named
R0, R1, ... R31 to refer to the Itanium registers where those Alpha register values
reside. You can still use the debugger’s names %R0, %R1, ... %R31 to refer to
registers by the native machine’s numbering.
2–34 How the MACRO Compiler Functions on Different Platforms