Go to the first, previous, next, last section, table of contents.


C++ expressions

expression handling has a number of extensions to interpret a significant subset of C++ expressions.

Warning: 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. 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 does not work.

  1. Member function calls are allowed; you can use expressions like
    count = aml->GetOriginal(x, y)
    
  2. While a member function is active (in the selected stack frame), your expressions have the same namespace available as the member function; that is, allows implicit references to the class instance pointer this following the same rules as C++.
  3. You can call overloaded functions; 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. does not perform conversions requiring constructors or user-defined type operators.
  4. 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 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'.
  5. 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'. 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.