Go to the first, previous, next, last section, table of contents.
GDB expression handling has a number of extensions to
interpret a significant subset of C++ expressions.
Warning: GDB can only debug C++ code if you compile with
the GNU C++ compiler. Moreover, C++ debugging depends on the use of
additional debugging information in the symbol table, and thus requires
special support. GDB has this support only with the
stabs debug format. In particular, if your compiler generates a.out,
MIPS ECOFF, RS/6000 XCOFF, or ELF with stabs extensions
to the symbol table, these facilities are all available. (With GNU CC,
you can use the `-gstabs' option to request stabs debugging
extensions explicitly.) Where the object code format is standard
COFF or DWARF in ELF, on the other hand, most of the C++
support in GDB does not work.
-
Member function calls are allowed; you can use expressions like
count = aml->GetOriginal(x, y)
-
While a member function is active (in the selected stack frame), your
expressions have the same namespace available as the member function;
that is, GDB allows implicit references to the class instance
pointer
this
following the same rules as C++.
-
You can call overloaded functions; GDB resolves the function
call to the right definition, with one restriction--you must use
arguments of the type required by the function that you want to call.
GDB does not perform conversions requiring constructors or
user-defined type operators.
-
GDB understands variables declared as C++ references; you can use
them in expressions just as you do in C++ source--they are automatically
dereferenced.
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'.
-
GDB supports the C++ name resolution operator
::
---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 section Program variables).
Go to the first, previous, next, last section, table of contents.