Asynchronous-and-non_002dstop-modes.html 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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: Asynchronous and non-stop modes</title>
  16. <meta name="description" content="Debugging with GDB: Asynchronous and non-stop modes">
  17. <meta name="keywords" content="Debugging with GDB: Asynchronous and non-stop modes">
  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="GDB_002fMI-General-Design.html#GDB_002fMI-General-Design" rel="up" title="GDB/MI General Design">
  26. <link href="Thread-groups.html#Thread-groups" rel="next" title="Thread groups">
  27. <link href="Context-management.html#Context-management" rel="previous" title="Context management">
  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="Asynchronous-and-non_002dstop-modes"></a>
  59. <div class="header">
  60. <p>
  61. Next: <a href="Thread-groups.html#Thread-groups" accesskey="n" rel="next">Thread groups</a>, Previous: <a href="Context-management.html#Context-management" accesskey="p" rel="previous">Context management</a>, Up: <a href="GDB_002fMI-General-Design.html#GDB_002fMI-General-Design" accesskey="u" rel="up">GDB/MI General Design</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="Asynchronous-command-execution-and-non_002dstop-mode"></a>
  65. <h4 class="subsection">27.1.2 Asynchronous command execution and non-stop mode</h4>
  66. <p>On some targets, <small>GDB</small> is capable of processing MI commands
  67. even while the target is running. This is called <em>asynchronous
  68. command execution</em> (see <a href="Background-Execution.html#Background-Execution">Background Execution</a>). The frontend may
  69. specify a preference for asynchronous execution using the
  70. <code>-gdb-set mi-async 1</code> command, which should be emitted before
  71. either running the executable or attaching to the target. After the
  72. frontend has started the executable or attached to the target, it can
  73. find if asynchronous execution is enabled using the
  74. <code>-list-target-features</code> command.
  75. </p>
  76. <dl compact="compact">
  77. <dt><code>-gdb-set mi-async on</code></dt>
  78. <dt><code>-gdb-set mi-async off</code></dt>
  79. <dd><p>Set whether MI is in asynchronous mode.
  80. </p>
  81. <p>When <code>off</code>, which is the default, MI execution commands (e.g.,
  82. <code>-exec-continue</code>) are foreground commands, and <small>GDB</small> waits
  83. for the program to stop before processing further commands.
  84. </p>
  85. <p>When <code>on</code>, MI execution commands are background execution
  86. commands (e.g., <code>-exec-continue</code> becomes the equivalent of the
  87. <code>c&amp;</code> CLI command), and so <small>GDB</small> is capable of processing
  88. MI commands even while the target is running.
  89. </p>
  90. </dd>
  91. <dt><code>-gdb-show mi-async</code></dt>
  92. <dd><p>Show whether MI asynchronous mode is enabled.
  93. </p></dd>
  94. </dl>
  95. <p>Note: In <small>GDB</small> version 7.7 and earlier, this option was called
  96. <code>target-async</code> instead of <code>mi-async</code>, and it had the effect
  97. of both putting MI in asynchronous mode and making CLI background
  98. commands possible. CLI background commands are now always possible
  99. &ldquo;out of the box&rdquo; if the target supports them. The old spelling is
  100. kept as a deprecated alias for backwards compatibility.
  101. </p>
  102. <p>Even if <small>GDB</small> can accept a command while target is running,
  103. many commands that access the target do not work when the target is
  104. running. Therefore, asynchronous command execution is most useful
  105. when combined with non-stop mode (see <a href="Non_002dStop-Mode.html#Non_002dStop-Mode">Non-Stop Mode</a>). Then,
  106. it is possible to examine the state of one thread, while other threads
  107. are running.
  108. </p>
  109. <p>When a given thread is running, MI commands that try to access the
  110. target in the context of that thread may not work, or may work only on
  111. some targets. In particular, commands that try to operate on thread&rsquo;s
  112. stack will not work, on any target. Commands that read memory, or
  113. modify breakpoints, may work or not work, depending on the target. Note
  114. that even commands that operate on global state, such as <code>print</code>,
  115. <code>set</code>, and breakpoint commands, still access the target in the
  116. context of a specific thread, so frontend should try to find a
  117. stopped thread and perform the operation on that thread (using the
  118. &lsquo;<samp>--thread</samp>&rsquo; option).
  119. </p>
  120. <p>Which commands will work in the context of a running thread is
  121. highly target dependent. However, the two commands
  122. <code>-exec-interrupt</code>, to stop a thread, and <code>-thread-info</code>,
  123. to find the state of a thread, will always work.
  124. </p>
  125. <hr>
  126. <div class="header">
  127. <p>
  128. Next: <a href="Thread-groups.html#Thread-groups" accesskey="n" rel="next">Thread groups</a>, Previous: <a href="Context-management.html#Context-management" accesskey="p" rel="previous">Context management</a>, Up: <a href="GDB_002fMI-General-Design.html#GDB_002fMI-General-Design" accesskey="u" rel="up">GDB/MI General Design</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>
  129. </div>
  130. </body>
  131. </html>