GDB expression handling can interpret most C++ expressions.
Warning: GDB can only debug C++ code if you use the proper compiler and the proper debug format. Currently, GDB works best when debugging C++ code that is compiled with the most recent version of GCC possible. The DWARF debugging format is preferred; GCC defaults to this on most popular platforms. Other compilers and/or debug formats are likely to work badly or not at all when using GDB to debug C++ code. See Compilation.
count = aml->GetOriginal(x, y)
thisfollowing the same rules as C++.
usingdeclarations in the current scope are also respected by GDB.
It does perform integral conversions and promotions, floating-point promotions, arithmetic conversions, pointer conversions, conversions of class objects to base classes, and standard conversions such as those of functions or arrays to pointers; it requires an exact match on the number of function arguments.
Overload resolution is always performed, unless you have specified
set overload-resolution off. See GDB Features for C++.
You must specify
set overload-resolution off in order to use an
explicit function signature to call an overloaded function, as in
p 'foo(char,int)'('x', 13)
The GDB command-completion facility can simplify this; see Command Completion.
In the parameter list shown when GDB displays a frame, the values of reference variables are not displayed (unlike other variables); this avoids clutter, since references are often used for large structures. The address of a reference variable is always shown, unless you have specified ‘set print address off’.
::—your expressions can use it just as expressions in your program do. Since one scope may be defined in another, you can use
::repeatedly if necessary, for example in an expression like ‘scope1::scope2::name’. GDB also allows resolving name scope by reference to source files, in both C and C++ debugging (see Program Variables).