manpagez: man pages & more
info gdb
Home | html | info | man
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.4.1.3 C++ Expressions

No value for GDBN expression handling can interpret most C++ expressions.

Warning: No value for GDBN can only debug C++ code if you use the proper compiler and the proper debug format. Currently, No value for GDBN works best when debugging C++ code that is compiled with No value for NGCC 2.95.3 or with No value for NGCC 3.1 or newer, using the options ‘-gdwarf-2’ or ‘-gstabs+’. DWARF 2 is preferred over stabs+. Most configurations of No value for NGCC emit either DWARF 2 or stabs+ as their default debug format, so you usually don't need to specify a debug format explicitly. Other compilers and/or debug formats are likely to work badly or not at all when using No value for GDBN to debug C++ code.

  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, No value for GDBN allows implicit references to the class instance pointer this following the same rules as C++.
  3. You can call overloaded functions; No value for GDBN resolves the function call to the right definition, with some restrictions. No value for GDBN does not perform overload resolution involving user-defined type conversions, calls to constructors, or instantiations of templates that do not exist in the program. It also cannot handle ellipsis argument lists or default arguments.

    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 section No value for GDBN 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 No value for GDBN command-completion facility can simplify this; see Command Completion.

  4. No value for GDBN 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 No value for GDBN 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. No value for GDBN 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’. No value for GDBN also allows resolving name scope by reference to source files, in both C and C++ debugging (see section Program Variables).

In addition, when used with HP's C++ compiler, No value for GDBN supports calling virtual functions correctly, printing out virtual bases of objects, calling functions in a base subobject, casting objects, and invoking user-defined operators.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]
© manpagez.com 2000-2017
Individual documents may contain additional copyright information.