1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc. 4 5Permission is granted to copy, distribute and/or modify this document 6under the terms of the GNU Free Documentation License, Version 1.3 or 7any later version published by the Free Software Foundation; with the 8Invariant Sections being "Free Software" and "Free Software Needs 9Free Documentation", with the Front-Cover Texts being "A GNU Manual," 10and with the Back-Cover Texts as in (a) below. 11 12(a) The FSF's Back-Cover Text is: "You are free to copy and modify 13this GNU Manual. Buying copies from GNU Press supports the FSF in 14developing GNU and promoting software freedom." --> 15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 16<head> 17<title>Debugging with GDB: Range Checking</title> 18 19<meta name="description" content="Debugging with GDB: Range Checking"> 20<meta name="keywords" content="Debugging with GDB: Range Checking"> 21<meta name="resource-type" content="document"> 22<meta name="distribution" content="global"> 23<meta name="Generator" content="makeinfo"> 24<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 25<link href="index.html#Top" rel="start" title="Top"> 26<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> 27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 28<link href="Checks.html#Checks" rel="up" title="Checks"> 29<link href="Supported-Languages.html#Supported-Languages" rel="next" title="Supported Languages"> 30<link href="Type-Checking.html#Type-Checking" rel="previous" title="Type Checking"> 31<style type="text/css"> 32<!-- 33a.summary-letter {text-decoration: none} 34blockquote.smallquotation {font-size: smaller} 35div.display {margin-left: 3.2em} 36div.example {margin-left: 3.2em} 37div.indentedblock {margin-left: 3.2em} 38div.lisp {margin-left: 3.2em} 39div.smalldisplay {margin-left: 3.2em} 40div.smallexample {margin-left: 3.2em} 41div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 42div.smalllisp {margin-left: 3.2em} 43kbd {font-style:oblique} 44pre.display {font-family: inherit} 45pre.format {font-family: inherit} 46pre.menu-comment {font-family: serif} 47pre.menu-preformatted {font-family: serif} 48pre.smalldisplay {font-family: inherit; font-size: smaller} 49pre.smallexample {font-size: smaller} 50pre.smallformat {font-family: inherit; font-size: smaller} 51pre.smalllisp {font-size: smaller} 52span.nocodebreak {white-space:nowrap} 53span.nolinebreak {white-space:nowrap} 54span.roman {font-family:serif; font-weight:normal} 55span.sansserif {font-family:sans-serif; font-weight:normal} 56ul.no-bullet {list-style: none} 57--> 58</style> 59 60 61</head> 62 63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 64<a name="Range-Checking"></a> 65<div class="header"> 66<p> 67Previous: <a href="Type-Checking.html#Type-Checking" accesskey="p" rel="previous">Type Checking</a>, Up: <a href="Checks.html#Checks" accesskey="u" rel="up">Checks</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 68</div> 69<hr> 70<a name="An-Overview-of-Range-Checking"></a> 71<h4 class="subsection">15.3.2 An Overview of Range Checking</h4> 72 73<p>In some languages (such as Modula-2), it is an error to exceed the 74bounds of a type; this is enforced with run-time checks. Such range 75checking is meant to ensure program correctness by making sure 76computations do not overflow, or indices on an array element access do 77not exceed the bounds of the array. 78</p> 79<p>For expressions you use in <small>GDB</small> commands, you can tell 80<small>GDB</small> to treat range errors in one of three ways: ignore them, 81always treat them as errors and abandon the expression, or issue 82warnings but evaluate the expression anyway. 83</p> 84<p>A range error can result from numerical overflow, from exceeding an 85array index bound, or when you type a constant that is not a member 86of any type. Some languages, however, do not treat overflows as an 87error. In many implementations of C, mathematical overflow causes the 88result to “wrap around” to lower values—for example, if <var>m</var> is 89the largest integer value, and <var>s</var> is the smallest, then 90</p> 91<div class="smallexample"> 92<pre class="smallexample"><var>m</var> + 1 ⇒ <var>s</var> 93</pre></div> 94 95<p>This, too, is specific to individual languages, and in some cases 96specific to individual compilers or machines. See <a href="Supported-Languages.html#Supported-Languages">Supported Languages</a>, for further details on specific languages. 97</p> 98<p><small>GDB</small> provides some additional commands for controlling the range checker: 99</p> 100<a name="index-set-check-range"></a> 101<a name="index-show-check-range"></a> 102<dl compact="compact"> 103<dt><code>set check range auto</code></dt> 104<dd><p>Set range checking on or off based on the current working language. 105See <a href="Supported-Languages.html#Supported-Languages">Supported Languages</a>, for the default settings for 106each language. 107</p> 108</dd> 109<dt><code>set check range on</code></dt> 110<dt><code>set check range off</code></dt> 111<dd><p>Set range checking on or off, overriding the default setting for the 112current working language. A warning is issued if the setting does not 113match the language default. If a range error occurs and range checking is on, 114then a message is printed and evaluation of the expression is aborted. 115</p> 116</dd> 117<dt><code>set check range warn</code></dt> 118<dd><p>Output messages when the <small>GDB</small> range checker detects a range error, 119but attempt to evaluate the expression anyway. Evaluating the 120expression may still be impossible for other reasons, such as accessing 121memory that the process does not own (a typical example from many Unix 122systems). 123</p> 124</dd> 125<dt><code>show range</code></dt> 126<dd><p>Show the current setting of the range checker, and whether or not it is 127being set automatically by <small>GDB</small>. 128</p></dd> 129</dl> 130 131<hr> 132<div class="header"> 133<p> 134Previous: <a href="Type-Checking.html#Type-Checking" accesskey="p" rel="previous">Type Checking</a>, Up: <a href="Checks.html#Checks" accesskey="u" rel="up">Checks</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 135</div> 136 137 138 139</body> 140</html> 141