| <html lang="en"> | 
 | <head> | 
 | <title>Range Checking - Debugging with GDB</title> | 
 | <meta http-equiv="Content-Type" content="text/html"> | 
 | <meta name="description" content="Debugging with GDB"> | 
 | <meta name="generator" content="makeinfo 4.13"> | 
 | <link title="Top" rel="start" href="index.html#Top"> | 
 | <link rel="up" href="Checks.html#Checks" title="Checks"> | 
 | <link rel="prev" href="Type-Checking.html#Type-Checking" title="Type Checking"> | 
 | <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> | 
 | <!-- | 
 | Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, | 
 | 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 | 
 | Free Software Foundation, Inc. | 
 |  | 
 | Permission is granted to copy, distribute and/or modify this document | 
 | under the terms of the GNU Free Documentation License, Version 1.3 or | 
 | any later version published by the Free Software Foundation; with the | 
 | Invariant Sections being ``Free Software'' and ``Free Software Needs | 
 | Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,'' | 
 | and with the Back-Cover Texts as in (a) below. | 
 |  | 
 | (a) The FSF's Back-Cover Text is: ``You are free to copy and modify | 
 | this GNU Manual.  Buying copies from GNU Press supports the FSF in | 
 | developing GNU and promoting software freedom.''--> | 
 | <meta http-equiv="Content-Style-Type" content="text/css"> | 
 | <style type="text/css"><!-- | 
 |   pre.display { font-family:inherit } | 
 |   pre.format  { font-family:inherit } | 
 |   pre.smalldisplay { font-family:inherit; font-size:smaller } | 
 |   pre.smallformat  { font-family:inherit; font-size:smaller } | 
 |   pre.smallexample { font-size:smaller } | 
 |   pre.smalllisp    { font-size:smaller } | 
 |   span.sc    { font-variant:small-caps } | 
 |   span.roman { font-family:serif; font-weight:normal; }  | 
 |   span.sansserif { font-family:sans-serif; font-weight:normal; }  | 
 | --></style> | 
 | <link rel="stylesheet" type="text/css" href="../cs.css"> | 
 | </head> | 
 | <body> | 
 | <div class="node"> | 
 | <a name="Range-Checking"></a> | 
 | <p> | 
 | Previous: <a rel="previous" accesskey="p" href="Type-Checking.html#Type-Checking">Type Checking</a>, | 
 | Up: <a rel="up" accesskey="u" href="Checks.html#Checks">Checks</a> | 
 | <hr> | 
 | </div> | 
 |  | 
 | <h4 class="subsection">15.3.2 An Overview of Range Checking</h4> | 
 |  | 
 | <p>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. | 
 |  | 
 |    <p>For expressions you use in <span class="sc">gdb</span> commands, you can tell | 
 | <span class="sc">gdb</span> 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. | 
 |  | 
 |    <p>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 <var>m</var> is | 
 | the largest integer value, and <var>s</var> is the smallest, then | 
 |  | 
 | <pre class="smallexample">     <var>m</var> + 1 ⇒ <var>s</var> | 
 | </pre> | 
 |    <p>This, too, is specific to individual languages, and in some cases | 
 | specific to individual compilers or machines.  See <a href="Supported-Languages.html#Supported-Languages">Supported Languages</a>, for further details on specific languages. | 
 |  | 
 |    <p><span class="sc">gdb</span> provides some additional commands for controlling the range checker: | 
 |  | 
 |    <p><a name="index-set-check-range-791"></a><a name="index-show-check-range-792"></a> | 
 |      <dl> | 
 | <dt><code>set check range auto</code><dd>Set range checking on or off based on the current working language.  | 
 | See <a href="Supported-Languages.html#Supported-Languages">Supported Languages</a>, for the default settings for | 
 | each language. | 
 |  | 
 |      <br><dt><code>set check range on</code><dt><code>set check range off</code><dd>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. | 
 |  | 
 |      <br><dt><code>set check range warn</code><dd>Output messages when the <span class="sc">gdb</span> 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). | 
 |  | 
 |      <br><dt><code>show range</code><dd>Show the current setting of the range checker, and whether or not it is | 
 | being set automatically by <span class="sc">gdb</span>.  | 
 | </dl> | 
 |  | 
 |    </body></html> | 
 |  |