Display the value of an expression.


EVALUATE [format] [size] [/ADDRESS] [/LEVEL[=number]] [/TYPE] expression



One of the following:

/ASCII [:length]





Values are shown in binary, decimal, hexadecimal, or octal notation when the /BINARY, /DEC, /HEX, or /OCT qualifier is used.

The qualifier /ASCII is used to show a char pointer or a char array as a readable string enclosed in double quotes (“”). Non-printable characters are shown as ‘.'. By default, a string is shown up to the first 0-byte. This can be avoided by giving a length declaration after the /ASCII qualifier separated by ‘:' (/ASCII:length). Then up to length bytes are shown, where length is any expression.


The type of memory access is defined by the parameter size. Possible values are:




The amount of memory read from the target must be a multiple of the selected size. The default is /BYTE. The size option may be used with any format qualifier. It is ignored when /ASCII is used which forces byte access.


The option /ADDRESS shows the address where the result of the expression is stored. If the expression refers to a register, the register name is printed.

This option is rather meaningless when applied to expressions like “42” or “i+1” which do not have a memory address.


If the expression to be evaluated denotes a structure containing sub-structures, the /LEVEL option limits the depth of the evaluation to the number number. If the depth number is omitted, the complete substructures are displayed. This is also the case if the /LEVEL option is omitted or number is set to 0.


Using this option the type of a variable is displayed in the Console window. For example, if the following command is entered, the type of the variable var2 is displayed:


In the Console window appears the following output:

char (bits:8) * (bits:32)


An expression in the notation of the currently selected language or a debugger variable. See Assembler Expressions Overview for the grammar of legal expressions.


This command displays the value of the specified expression in the Console window. If no qualifier is supplied, the output is formatted according to the type of the result.

All members of structured data types are shown with their member names. The value of a union is shown in the format of all union members. All elements of arrays are displayed. By default, scalar values are stated in decimal and all pointers in hexadecimal notation.

If a pointer has the value 0, the string “(NIL)” is printed. In case of function pointers, the name of the procedure referenced by the pointer is printed.

Instead of printing a variable, the output can also be one of the following terms:

<optimized out>: The variable is not available because of compiler optimizations.

<currently unavailable>: The variable is currently not in scope. A value will be displayed as soon as the execution is stopped in the code block where the variable is defined.


EVALUATE struct1.member1
EVALUATE (i%5) - 10 + (x * i - b)
EVALUATE ptr->pmember.a[2]
EVALUATE struct1.array[i]
EVALUATE i*10 + struct1.member2 - x
EVALUATE /DEC   pointer1
EVALUATE /DEC   structa
EVALUATE /BIN   ptr->pmember
EVALUATE /HEX struct1.member1
EVALUATE /ADDRESS  struct1.member1
EVALUATE /ADDRESS  ptr->pmember->next->next
EVALUATE /ASCII *char_array[0]
EVALUATE /ASCII:10      *char_pointer

See Also

For more complete information about compiler optimizations, see our Optimization Notice.