The debugger can evaluate simple expressions that can be subsequently displayed in the watch window or as a tool-tip in the code editor.
The simplest expression is an identifier which the debugger tries to interpret in the following order:
- an identifier that exists in the scope of the current context.
- the name of a global identifier in the program of the current context.
Numbers can be used in expressions, hexadecimal numbers must be prefixed with ‘0x’.
Registers can be referenced by prefixing the register name with ‘@’.
The standard C and C++ operators !, ~, *, /, %, +, -, >>, <<, <, <=, >, >=, ==, |=, &, ^, |, &&, || are supported on numeric types.
The standard assignment operators =, +=, -=, *=, /=, %=, >>=, <<=, &=, |=, ^= are supported on number types.
The array subscript [] operator is supported on array and pointer types.
The structure access operator . is supported on structured types (this also works on pointers to sstructures) and the -> works similarly.
The dereference operator (prefix *) is supported on pointers, the addressof (prefix &) and sizeof operators are supported.
Casting to basic pointer types is supported. For example (unsigned char *)0x300 can be used to display the memory at a given location.
Operators have the precedence and associativity that one would expect of a C like programming language.