You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Compilation.html 6.0KB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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>Compilation (Debugging with GDB)</title>
  17. <meta name="description" content="Compilation (Debugging with GDB)">
  18. <meta name="keywords" content="Compilation (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="Running.html#Running" rel="up" title="Running">
  26. <link href="Starting.html#Starting" rel="next" title="Starting">
  27. <link href="Running.html#Running" rel="prev" title="Running">
  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="Compilation"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="Starting.html#Starting" accesskey="n" rel="next">Starting</a>, Up: <a href="Running.html#Running" accesskey="u" rel="up">Running</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="Compiling-for-Debugging"></a>
  64. <h3 class="section">4.1 Compiling for Debugging</h3>
  65. <p>In order to debug a program effectively, you need to generate
  66. debugging information when you compile it. This debugging information
  67. is stored in the object file; it describes the data type of each
  68. variable or function and the correspondence between source line numbers
  69. and addresses in the executable code.
  70. </p>
  71. <p>To request debugging information, specify the &lsquo;<samp>-g</samp>&rsquo; option when you run
  72. the compiler.
  73. </p>
  74. <p>Programs that are to be shipped to your customers are compiled with
  75. optimizations, using the &lsquo;<samp>-O</samp>&rsquo; compiler option. However, some
  76. compilers are unable to handle the &lsquo;<samp>-g</samp>&rsquo; and &lsquo;<samp>-O</samp>&rsquo; options
  77. together. Using those compilers, you cannot generate optimized
  78. executables containing debugging information.
  79. </p>
  80. <p><small>GCC</small>, the <small>GNU</small> C/C<tt>++</tt> compiler, supports &lsquo;<samp>-g</samp>&rsquo; with or
  81. without &lsquo;<samp>-O</samp>&rsquo;, making it possible to debug optimized code. We
  82. recommend that you <em>always</em> use &lsquo;<samp>-g</samp>&rsquo; whenever you compile a
  83. program. You may think your program is correct, but there is no sense
  84. in pushing your luck. For more information, see <a href="Optimized-Code.html#Optimized-Code">Optimized Code</a>.
  85. </p>
  86. <p>Older versions of the <small>GNU</small> C compiler permitted a variant option
  87. &lsquo;<samp><span class="nolinebreak">-gg</span></samp>&rsquo;<!-- /@w --> for debugging information. <small>GDB</small> no longer supports this
  88. format; if your <small>GNU</small> C compiler has this option, do not use it.
  89. </p>
  90. <p><small>GDB</small> knows about preprocessor macros and can show you their
  91. expansion (see <a href="Macros.html#Macros">Macros</a>). Most compilers do not include information
  92. about preprocessor macros in the debugging information if you specify
  93. the <samp>-g</samp> flag alone. Version 3.1 and later of <small>GCC</small>,
  94. the <small>GNU</small> C compiler, provides macro information if you are using
  95. the DWARF debugging format, and specify the option <samp>-g3</samp>.
  96. </p>
  97. <p>See <a href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options">Options for Debugging Your Program or GCC</a> in <cite>Using the <small>GNU</small> Compiler Collection (GCC)</cite>, for more
  98. information on <small>GCC</small> options affecting debug information.
  99. </p>
  100. <p>You will have the best debugging experience if you use the latest
  101. version of the DWARF debugging format that your compiler supports.
  102. DWARF is currently the most expressive and best supported debugging
  103. format in <small>GDB</small>.
  104. </p>
  105. <hr>
  106. <div class="header">
  107. <p>
  108. Next: <a href="Starting.html#Starting" accesskey="n" rel="next">Starting</a>, Up: <a href="Running.html#Running" accesskey="u" rel="up">Running</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>
  109. </div>
  110. </body>
  111. </html>