Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

Range-Checking.html 6.2KB

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