gdb: Range Checking

 
 15.3.2 An Overview of Range Checking
 ------------------------------------
 
 In some languages (such as Modula-2), it is an error to exceed the
 bounds of a type; this is enforced with run-time checks.  Such range
 checking is meant to ensure program correctness by making sure
 computations do not overflow, or indices on an array element access do
 not exceed the bounds of the array.
 
    For expressions you use in GDB commands, you can tell GDB to treat
 range errors in one of three ways: ignore them, always treat them as
 errors and abandon the expression, or issue warnings but evaluate the
 expression anyway.
 
    A range error can result from numerical overflow, from exceeding an
 array index bound, or when you type a constant that is not a member of
 any type.  Some languages, however, do not treat overflows as an error.
 In many implementations of C, mathematical overflow causes the result to
 "wrap around" to lower values--for example, if M is the largest integer
 value, and S is the smallest, then
 
      M + 1 => S
 
    This, too, is specific to individual languages, and in some cases
 specific to individual compilers or machines.  SeeSupported
 Languages Supported Languages, for further details on specific
 languages.
 
    GDB provides some additional commands for controlling the range
 checker:
 
 'set check range auto'
      Set range checking on or off based on the current working language.
      SeeSupported Languages Supported Languages, for the default
      settings for each language.
 
 'set check range on'
 'set check range off'
      Set range checking on or off, overriding the default setting for
      the current working language.  A warning is issued if the setting
      does not match the language default.  If a range error occurs and
      range checking is on, then a message is printed and evaluation of
      the expression is aborted.
 
 'set check range warn'
      Output messages when the GDB range checker detects a range error,
      but attempt to evaluate the expression anyway.  Evaluating the
      expression may still be impossible for other reasons, such as
      accessing memory that the process does not own (a typical example
      from many Unix systems).
 
 'show range'
      Show the current setting of the range checker, and whether or not
      it is being set automatically by GDB.