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.

140 lines
6.2KB

  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>Automatic Overlay Debugging (Debugging with GDB)</title>
  17. <meta name="description" content="Automatic Overlay Debugging (Debugging with GDB)">
  18. <meta name="keywords" content="Automatic Overlay Debugging (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="Overlays.html#Overlays" rel="up" title="Overlays">
  26. <link href="Overlay-Sample-Program.html#Overlay-Sample-Program" rel="next" title="Overlay Sample Program">
  27. <link href="Overlay-Commands.html#Overlay-Commands" rel="prev" title="Overlay Commands">
  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="Automatic-Overlay-Debugging"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="Overlay-Sample-Program.html#Overlay-Sample-Program" accesskey="n" rel="next">Overlay Sample Program</a>, Previous: <a href="Overlay-Commands.html#Overlay-Commands" accesskey="p" rel="prev">Overlay Commands</a>, Up: <a href="Overlays.html#Overlays" accesskey="u" rel="up">Overlays</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="Automatic-Overlay-Debugging-1"></a>
  64. <h3 class="section">14.3 Automatic Overlay Debugging</h3>
  65. <a name="index-automatic-overlay-debugging"></a>
  66. <p><small>GDB</small> can automatically track which overlays are mapped and which
  67. are not, given some simple co-operation from the overlay manager in the
  68. inferior. If you enable automatic overlay debugging with the
  69. <code>overlay auto</code> command (see <a href="Overlay-Commands.html#Overlay-Commands">Overlay Commands</a>), <small>GDB</small>
  70. looks in the inferior&rsquo;s memory for certain variables describing the
  71. current state of the overlays.
  72. </p>
  73. <p>Here are the variables your overlay manager must define to support
  74. <small>GDB</small>&rsquo;s automatic overlay debugging:
  75. </p>
  76. <dl compact="compact">
  77. <dt><code>_ovly_table</code>:</dt>
  78. <dd><p>This variable must be an array of the following structures:
  79. </p>
  80. <div class="smallexample">
  81. <pre class="smallexample">struct
  82. {
  83. /* The overlay's mapped address. */
  84. unsigned long vma;
  85. /* The size of the overlay, in bytes. */
  86. unsigned long size;
  87. /* The overlay's load address. */
  88. unsigned long lma;
  89. /* Non-zero if the overlay is currently mapped;
  90. zero otherwise. */
  91. unsigned long mapped;
  92. }
  93. </pre></div>
  94. </dd>
  95. <dt><code>_novlys</code>:</dt>
  96. <dd><p>This variable must be a four-byte signed integer, holding the total
  97. number of elements in <code>_ovly_table</code>.
  98. </p>
  99. </dd>
  100. </dl>
  101. <p>To decide whether a particular overlay is mapped or not, <small>GDB</small>
  102. looks for an entry in <code><span class="nolinebreak">_ovly_table</span></code><!-- /@w --> whose <code>vma</code> and
  103. <code>lma</code> members equal the VMA and LMA of the overlay&rsquo;s section in the
  104. executable file. When <small>GDB</small> finds a matching entry, it consults
  105. the entry&rsquo;s <code>mapped</code> member to determine whether the overlay is
  106. currently mapped.
  107. </p>
  108. <p>In addition, your overlay manager may define a function called
  109. <code>_ovly_debug_event</code>. If this function is defined, <small>GDB</small>
  110. will silently set a breakpoint there. If the overlay manager then
  111. calls this function whenever it has changed the overlay table, this
  112. will enable <small>GDB</small> to accurately keep track of which overlays
  113. are in program memory, and update any breakpoints that may be set
  114. in overlays. This will allow breakpoints to work even if the
  115. overlays are kept in ROM or other non-writable memory while they
  116. are not being executed.
  117. </p>
  118. <hr>
  119. <div class="header">
  120. <p>
  121. Next: <a href="Overlay-Sample-Program.html#Overlay-Sample-Program" accesskey="n" rel="next">Overlay Sample Program</a>, Previous: <a href="Overlay-Commands.html#Overlay-Commands" accesskey="p" rel="prev">Overlay Commands</a>, Up: <a href="Overlays.html#Overlays" accesskey="u" rel="up">Overlays</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>
  122. </div>
  123. </body>
  124. </html>