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.

136 lines
6.7KB

  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>GDB/MI General Design (Debugging with GDB)</title>
  17. <meta name="description" content="GDB/MI General Design (Debugging with GDB)">
  18. <meta name="keywords" content="GDB/MI General Design (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="GDB_002fMI.html#GDB_002fMI" rel="up" title="GDB/MI">
  26. <link href="Context-management.html#Context-management" rel="next" title="Context management">
  27. <link href="GDB_002fMI.html#GDB_002fMI" rel="prev" title="GDB/MI">
  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="GDB_002fMI-General-Design"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="GDB_002fMI-Command-Syntax.html#GDB_002fMI-Command-Syntax" accesskey="n" rel="next">GDB/MI Command Syntax</a>, Up: <a href="GDB_002fMI.html#GDB_002fMI" accesskey="u" rel="up">GDB/MI</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="GDB_002fMI-General-Design-1"></a>
  64. <h3 class="section">27.1 <small>GDB/MI</small> General Design</h3>
  65. <a name="index-GDB_002fMI-General-Design"></a>
  66. <p>Interaction of a <small>GDB/MI</small> frontend with <small>GDB</small> involves three
  67. parts&mdash;commands sent to <small>GDB</small>, responses to those commands
  68. and notifications. Each command results in exactly one response,
  69. indicating either successful completion of the command, or an error.
  70. For the commands that do not resume the target, the response contains the
  71. requested information. For the commands that resume the target, the
  72. response only indicates whether the target was successfully resumed.
  73. Notifications is the mechanism for reporting changes in the state of the
  74. target, or in <small>GDB</small> state, that cannot conveniently be associated with
  75. a command and reported as part of that command response.
  76. </p>
  77. <p>The important examples of notifications are:
  78. </p><ul>
  79. <li> Exec notifications. These are used to report changes in
  80. target state&mdash;when a target is resumed, or stopped. It would not
  81. be feasible to include this information in response of resuming
  82. commands, because one resume commands can result in multiple events in
  83. different threads. Also, quite some time may pass before any event
  84. happens in the target, while a frontend needs to know whether the resuming
  85. command itself was successfully executed.
  86. </li><li> Console output, and status notifications. Console output
  87. notifications are used to report output of CLI commands, as well as
  88. diagnostics for other commands. Status notifications are used to
  89. report the progress of a long-running operation. Naturally, including
  90. this information in command response would mean no output is produced
  91. until the command is finished, which is undesirable.
  92. </li><li> General notifications. Commands may have various side effects on
  93. the <small>GDB</small> or target state beyond their official purpose. For example,
  94. a command may change the selected thread. Although such changes can
  95. be included in command response, using notification allows for more
  96. orthogonal frontend design.
  97. </li></ul>
  98. <p>There&rsquo;s no guarantee that whenever an MI command reports an error,
  99. <small>GDB</small> or the target are in any specific state, and especially,
  100. the state is not reverted to the state before the MI command was
  101. processed. Therefore, whenever an MI command results in an error,
  102. we recommend that the frontend refreshes all the information shown in
  103. the user interface.
  104. </p>
  105. <table class="menu" border="0" cellspacing="0">
  106. <tr><td align="left" valign="top">&bull; <a href="Context-management.html#Context-management" accesskey="1">Context management</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  107. </td></tr>
  108. <tr><td align="left" valign="top">&bull; <a href="Asynchronous-and-non_002dstop-modes.html#Asynchronous-and-non_002dstop-modes" accesskey="2">Asynchronous and non-stop modes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  109. </td></tr>
  110. <tr><td align="left" valign="top">&bull; <a href="Thread-groups.html#Thread-groups" accesskey="3">Thread groups</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  111. </td></tr>
  112. </table>
  113. <hr>
  114. <div class="header">
  115. <p>
  116. Next: <a href="GDB_002fMI-Command-Syntax.html#GDB_002fMI-Command-Syntax" accesskey="n" rel="next">GDB/MI Command Syntax</a>, Up: <a href="GDB_002fMI.html#GDB_002fMI" accesskey="u" rel="up">GDB/MI</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>
  117. </div>
  118. </body>
  119. </html>