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.

144 lines
7.0KB

  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>In-Process Agent (Debugging with GDB)</title>
  17. <meta name="description" content="In-Process Agent (Debugging with GDB)">
  18. <meta name="keywords" content="In-Process Agent (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="index.html#Top" rel="up" title="Top">
  26. <link href="In_002dProcess-Agent-Protocol.html#In_002dProcess-Agent-Protocol" rel="next" title="In-Process Agent Protocol">
  27. <link href="Writing-JIT-Debug-Info-Readers.html#Writing-JIT-Debug-Info-Readers" rel="prev" title="Writing JIT Debug Info Readers">
  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="In_002dProcess-Agent"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="GDB-Bugs.html#GDB-Bugs" accesskey="n" rel="next">GDB Bugs</a>, Previous: <a href="JIT-Interface.html#JIT-Interface" accesskey="p" rel="prev">JIT Interface</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</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="In_002dProcess-Agent-1"></a>
  64. <h2 class="chapter">30 In-Process Agent</h2>
  65. <a name="index-debugging-agent"></a>
  66. <p>The traditional debugging model is conceptually low-speed, but works fine,
  67. because most bugs can be reproduced in debugging-mode execution. However,
  68. as multi-core or many-core processors are becoming mainstream, and
  69. multi-threaded programs become more and more popular, there should be more
  70. and more bugs that only manifest themselves at normal-mode execution, for
  71. example, thread races, because debugger&rsquo;s interference with the program&rsquo;s
  72. timing may conceal the bugs. On the other hand, in some applications,
  73. it is not feasible for the debugger to interrupt the program&rsquo;s execution
  74. long enough for the developer to learn anything helpful about its behavior.
  75. If the program&rsquo;s correctness depends on its real-time behavior, delays
  76. introduced by a debugger might cause the program to fail, even when the
  77. code itself is correct. It is useful to be able to observe the program&rsquo;s
  78. behavior without interrupting it.
  79. </p>
  80. <p>Therefore, traditional debugging model is too intrusive to reproduce
  81. some bugs. In order to reduce the interference with the program, we can
  82. reduce the number of operations performed by debugger. The
  83. <em>In-Process Agent</em>, a shared library, is running within the same
  84. process with inferior, and is able to perform some debugging operations
  85. itself. As a result, debugger is only involved when necessary, and
  86. performance of debugging can be improved accordingly. Note that
  87. interference with program can be reduced but can&rsquo;t be removed completely,
  88. because the in-process agent will still stop or slow down the program.
  89. </p>
  90. <p>The in-process agent can interpret and execute Agent Expressions
  91. (see <a href="Agent-Expressions.html#Agent-Expressions">Agent Expressions</a>) during performing debugging operations. The
  92. agent expressions can be used for different purposes, such as collecting
  93. data in tracepoints, and condition evaluation in breakpoints.
  94. </p>
  95. <a name="Control-Agent"></a><p>You can control whether the in-process agent is used as an aid for
  96. debugging with the following commands:
  97. </p>
  98. <dl compact="compact">
  99. <dd><a name="index-set-agent-on"></a>
  100. </dd>
  101. <dt><code>set agent on</code></dt>
  102. <dd><p>Causes the in-process agent to perform some operations on behalf of the
  103. debugger. Just which operations requested by the user will be done
  104. by the in-process agent depends on the its capabilities. For example,
  105. if you request to evaluate breakpoint conditions in the in-process agent,
  106. and the in-process agent has such capability as well, then breakpoint
  107. conditions will be evaluated in the in-process agent.
  108. </p>
  109. <a name="index-set-agent-off"></a>
  110. </dd>
  111. <dt><code>set agent off</code></dt>
  112. <dd><p>Disables execution of debugging operations by the in-process agent. All
  113. of the operations will be performed by <small>GDB</small>.
  114. </p>
  115. <a name="index-show-agent"></a>
  116. </dd>
  117. <dt><code>show agent</code></dt>
  118. <dd><p>Display the current setting of execution of debugging operations by
  119. the in-process agent.
  120. </p></dd>
  121. </dl>
  122. <table class="menu" border="0" cellspacing="0">
  123. <tr><td align="left" valign="top">&bull; <a href="In_002dProcess-Agent-Protocol.html#In_002dProcess-Agent-Protocol" accesskey="1">In-Process Agent Protocol</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  124. </td></tr>
  125. </table>
  126. <hr>
  127. <div class="header">
  128. <p>
  129. Next: <a href="GDB-Bugs.html#GDB-Bugs" accesskey="n" rel="next">GDB Bugs</a>, Previous: <a href="JIT-Interface.html#JIT-Interface" accesskey="p" rel="prev">JIT Interface</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</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>
  130. </div>
  131. </body>
  132. </html>