gdb: Type Checking

 
 15.3.1 An Overview of Type Checking
 -----------------------------------
 
 Some languages, such as C and C++, are strongly typed, meaning that the
 arguments to operators and functions have to be of the correct type,
 otherwise an error occurs.  These checks prevent type mismatch errors
 from ever causing any run-time problems.  For example,
 
      int klass::my_method(char *b) { return  b ? 1 : 2; }
 
      (gdb) print obj.my_method (0)
      $1 = 2
 but
      (gdb) print obj.my_method (0x1234)
      Cannot resolve method klass::my_method to any overloaded instance
 
    The second example fails because in C++ the integer constant '0x1234'
 is not type-compatible with the pointer parameter type.
 
    For the expressions you use in GDB commands, you can tell GDB to not
 enforce strict type checking or to treat any mismatches as errors and
 abandon the expression; When type checking is disabled, GDB successfully
 evaluates expressions like the second example above.
 
    Even if type checking is off, there may be other reasons related to
 type that prevent GDB from evaluating an expression.  For instance, GDB
 does not know how to add an 'int' and a 'struct foo'.  These particular
 type errors have nothing to do with the language in use and usually
 arise from expressions which make little sense to evaluate anyway.
 
    GDB provides some additional commands for controlling type checking:
 
 'set check type on'
 'set check type off'
      Set strict type checking on or off.  If any type mismatches occur
      in evaluating an expression while type checking is on, GDB prints a
      message and aborts evaluation of the expression.
 
 'show check type'
      Show the current setting of type checking and whether GDB is
      enforcing strict type checking rules.