Evaluates an address expression and displays the result as a
memory address or a register name.
Format
EVALUATE/ADDRESS address-expression[, . . . ]
1 – Parameters
address-expression
Specifies an address expression of any valid form (for example, a
routine name, variable name, label, line number, and so on).
2 – Qualifiers
2.1 /BINARY
Displays the memory address in binary radix.
2.2 /DECIMAL
Displays the memory address in decimal radix.
2.3 /HEXADECIMAL
Displays the memory address in hexadecimal radix.
2.4 /OCTAL
Displays the memory address in octal radix.
3 – Description
The EVALUATE/ADDRESS command enables you to determine the memory
address or register associated with an address expression.
The debugger can interpret and display integer data in any one of
four radixes: binary, decimal, hexadecimal, and octal.
The default radix for both data entry and display is decimal for
most languages. The exceptions are BLISS and MACRO, which have a
default radix of hexadecimal.
You can use a radix qualifier (/BINARY, /OCTAL, and so on) to
display address values in another radix. These qualifiers do not
affect how the debugger interprets the data you specify; that is,
they override the current output radix, but not the input radix.
If the value of a variable is currently stored in a register
instead of memory, the EVALUATE/ADDRESS command identifies the
register. The radix qualifiers have no effect in that case.
The EVALUATE/ADDRESS command sets the current entity built-in
symbols %CURLOC and period (.) to the location denoted by the
address expression specified. Logical predecessors (%PREVLOC
or the circumflex character (^)) and successors (%NEXTLOC) are
based on the value of the current entity.
On Alpha processors, the command EVALUATE/ADDRESS procedure-name
displays the procedure descriptor address (not the code address)
of a specified routine, entry point, or Ada package.
Related commands:
EVALUATE
(SET,SHOW,CANCEL) RADIX
SHOW SYMBOL/ADDRESS
SYMBOLIZE
Routine names in debugger expressions have different meanings on
Integrity server and Alpha systems.
On Alpha systems, the command EVALUATE/ADDRESS RTN-NAME evaluates
to the address of the procedure descriptor.
4 – Examples
1.DBG> EVALUATE/ADDRESS RTN-NAME
On Integrity server systems, instead of displaying the address
of the official function descriptor, the debugger just displays
the code address. For example, on Alpha systems, you can enter
the following command and then set a breakpoint when a variable
contains the address, FOO:
2.DBG> SET BREAK .PC WHEN (.SOME_VARIABLE EQLA FOO)
The breakpoint occurs when the variable contains the address
of the procedure descriptor. However, when you enter the same
command on Integrity server systems, the breakpoint is never
reached because, although the user variable might contain the
address of the function descriptor for FOO, the "EQLA FOO" in
the WHEN clause compares it to the code address for FOO. As
a result, the user variable never contains the code address
of FOO. However, the first quadword of an Integrity server
function descriptor contains the code address, you can write it
as:
3.DBG> SET BREAK .PC WHEN (..SOME_VARIABLE EQLA FOO)
NOTE
On Integrity server systems, you cannot copy the following
line from your BLISS code: IF .SOME_VARIABLE EQLA FOO THEN
do-something;
4. DBG> EVALUATE/ADDRESS MODNAME\%LINE 110
3942
DBG>
This command displays the memory address denoted by the address
expression MODNAME\%LINE 110.
5.DBG> EVALUATE/ADDRESS/HEX A,B,C
000004A4
000004AC
000004A0
DBG>
This command displays the memory addresses denoted by the
address expressions A, B, and C in hexadecimal radix.
6.DBG> EVALUATE/ADDRESS X
MOD3\%R1
DBG>
This command indicates that variable X is associated with
register R1. X is a nonstatic (register) variable.