By default, the debugger gives no information on virtual base class pointers for the following:
By setting the $verbose debugger variable to 1, you can request that this information be printed in subsequent debugger responses. When the $verbose debugger variable is set to 1 and you display the contents of a class using the whatis command, several of the class members listed are not in the source code of the original class definition. The following line shows specific output from the whatis command for one of the additional members:
(idb) whatis CompoundNode::__vptr
(array [subrange 0 ... 0 of int] of union {
void <member function>(void)* fptr;
int ioffset;
})* Node::__vptr
The _vptr variable contains the addresses of all virtual functions associated with the class. The compiler generates several other class members for internal use.
The compiler generates additional parameters for non-static member functions. When the $verbose debugger variable is set to 1, these extra parameters are displayed as part of each member function's type signature. If you specify a version of an overloaded function by entering its type signature and the variable is set to 1, you must include these parameters. Do not include these parameters if the variable is set to 0.
When the $verbose variable is set to 1, the output of the dump command includes not only standard program variables but also compiler-generated temporary variables.
The following example prints class information using the whatis command under different settings of the $verbose variable:
(idb) set $verbose = 0
(idb) whatis CompoundNode
class CompoundNode : IntNode {
float _fdata;
CompoundNode(float, int);
virtual void printNodeData(void);
}
(idb) set $verbose = 1
(idb) whatis CompoundNode
class CompoundNode : IntNode {
float _fdata;
CompoundNode(class CompoundNode* const, float, int);
virtual void printNodeData(const class CompoundNode* const);
}