Expressions.html 6.3 KB

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 5.1, http://www.gnu.org/software/texinfo/ -->
  14. <head>
  15. <title>Debugging with GDB: Expressions</title>
  16. <meta name="description" content="Debugging with GDB: Expressions">
  17. <meta name="keywords" content="Debugging with GDB: Expressions">
  18. <meta name="resource-type" content="document">
  19. <meta name="distribution" content="global">
  20. <meta name="Generator" content="makeinfo">
  21. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  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="Data.html#Data" rel="up" title="Data">
  26. <link href="Ambiguous-Expressions.html#Ambiguous-Expressions" rel="next" title="Ambiguous Expressions">
  27. <link href="Data.html#Data" rel="previous" title="Data">
  28. <style type="text/css">
  29. <!--
  30. a.summary-letter {text-decoration: none}
  31. blockquote.smallquotation {font-size: smaller}
  32. div.display {margin-left: 3.2em}
  33. div.example {margin-left: 3.2em}
  34. div.indentedblock {margin-left: 3.2em}
  35. div.lisp {margin-left: 3.2em}
  36. div.smalldisplay {margin-left: 3.2em}
  37. div.smallexample {margin-left: 3.2em}
  38. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  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.nocodebreak {white-space:nowrap}
  50. span.nolinebreak {white-space:nowrap}
  51. span.roman {font-family:serif; font-weight:normal}
  52. span.sansserif {font-family:sans-serif; font-weight:normal}
  53. ul.no-bullet {list-style: none}
  54. -->
  55. </style>
  56. </head>
  57. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  58. <a name="Expressions"></a>
  59. <div class="header">
  60. <p>
  61. Next: <a href="Ambiguous-Expressions.html#Ambiguous-Expressions" accesskey="n" rel="next">Ambiguous Expressions</a>, Up: <a href="Data.html#Data" accesskey="u" rel="up">Data</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>
  62. </div>
  63. <hr>
  64. <a name="Expressions-1"></a>
  65. <h3 class="section">10.1 Expressions</h3>
  66. <a name="index-expressions"></a>
  67. <p><code>print</code> and many other <small>GDB</small> commands accept an expression and
  68. compute its value. Any kind of constant, variable or operator defined
  69. by the programming language you are using is valid in an expression in
  70. <small>GDB</small>. This includes conditional expressions, function calls,
  71. casts, and string constants. It also includes preprocessor macros, if
  72. you compiled your program to include this information; see
  73. <a href="Compilation.html#Compilation">Compilation</a>.
  74. </p>
  75. <a name="index-arrays-in-expressions"></a>
  76. <p><small>GDB</small> supports array constants in expressions input by
  77. the user. The syntax is {<var>element</var>, <var>element</var>&hellip;}. For example,
  78. you can use the command <code>print {1, 2, 3}</code> to create an array
  79. of three integers. If you pass an array to a function or assign it
  80. to a program variable, <small>GDB</small> copies the array to memory that
  81. is <code>malloc</code>ed in the target program.
  82. </p>
  83. <p>Because C is so widespread, most of the expressions shown in examples in
  84. this manual are in C. See <a href="Languages.html#Languages">Using <small>GDB</small> with Different
  85. Languages</a>, for information on how to use expressions in other
  86. languages.
  87. </p>
  88. <p>In this section, we discuss operators that you can use in <small>GDB</small>
  89. expressions regardless of your programming language.
  90. </p>
  91. <a name="index-casts_002c-in-expressions"></a>
  92. <p>Casts are supported in all languages, not just in C, because it is so
  93. useful to cast a number into a pointer in order to examine a structure
  94. at that address in memory.
  95. </p>
  96. <p><small>GDB</small> supports these operators, in addition to those common
  97. to programming languages:
  98. </p>
  99. <dl compact="compact">
  100. <dt><code>@</code></dt>
  101. <dd><p>&lsquo;<samp>@</samp>&rsquo; is a binary operator for treating parts of memory as arrays.
  102. See <a href="Arrays.html#Arrays">Artificial Arrays</a>, for more information.
  103. </p>
  104. </dd>
  105. <dt><code>::</code></dt>
  106. <dd><p>&lsquo;<samp>::</samp>&rsquo; allows you to specify a variable in terms of the file or
  107. function where it is defined. See <a href="Variables.html#Variables">Program Variables</a>.
  108. </p>
  109. <a name="index-_007btype_007d"></a>
  110. <a name="index-type-casting-memory"></a>
  111. <a name="index-memory_002c-viewing-as-typed-object"></a>
  112. <a name="index-casts_002c-to-view-memory"></a>
  113. </dd>
  114. <dt><code>{<var>type</var>} <var>addr</var></code></dt>
  115. <dd><p>Refers to an object of type <var>type</var> stored at address <var>addr</var> in
  116. memory. The address <var>addr</var> may be any expression whose value is
  117. an integer or pointer (but parentheses are required around binary
  118. operators, just as in a cast). This construct is allowed regardless
  119. of what kind of data is normally supposed to reside at <var>addr</var>.
  120. </p></dd>
  121. </dl>
  122. <hr>
  123. <div class="header">
  124. <p>
  125. Next: <a href="Ambiguous-Expressions.html#Ambiguous-Expressions" accesskey="n" rel="next">Ambiguous Expressions</a>, Up: <a href="Data.html#Data" accesskey="u" rel="up">Data</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>
  126. </div>
  127. </body>
  128. </html>