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.

127 lines
6.6KB

  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>Interrupts (Debugging with GDB)</title>
  17. <meta name="description" content="Interrupts (Debugging with GDB)">
  18. <meta name="keywords" content="Interrupts (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="Remote-Protocol.html#Remote-Protocol" rel="up" title="Remote Protocol">
  26. <link href="Notification-Packets.html#Notification-Packets" rel="next" title="Notification Packets">
  27. <link href="Host-I_002fO-Packets.html#Host-I_002fO-Packets" rel="prev" title="Host I/O Packets">
  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="Interrupts"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="Notification-Packets.html#Notification-Packets" accesskey="n" rel="next">Notification Packets</a>, Previous: <a href="Host-I_002fO-Packets.html#Host-I_002fO-Packets" accesskey="p" rel="prev">Host I/O Packets</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</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="Interrupts-1"></a>
  64. <h3 class="section">E.8 Interrupts</h3>
  65. <a name="index-interrupts-_0028remote-protocol_0029"></a>
  66. <a name="interrupting-remote-targets"></a>
  67. <p>In all-stop mode, when a program on the remote target is running,
  68. <small>GDB</small> may attempt to interrupt it by sending a &lsquo;<samp>Ctrl-C</samp>&rsquo;,
  69. <code>BREAK</code> or a <code>BREAK</code> followed by <code>g</code>, control of which
  70. is specified via <small>GDB</small>&rsquo;s &lsquo;<samp>interrupt-sequence</samp>&rsquo;.
  71. </p>
  72. <p>The precise meaning of <code>BREAK</code> is defined by the transport
  73. mechanism and may, in fact, be undefined. <small>GDB</small> does not
  74. currently define a <code>BREAK</code> mechanism for any of the network
  75. interfaces except for TCP, in which case <small>GDB</small> sends the
  76. <code>telnet</code> BREAK sequence.
  77. </p>
  78. <p>&lsquo;<samp>Ctrl-C</samp>&rsquo;, on the other hand, is defined and implemented for all
  79. transport mechanisms. It is represented by sending the single byte
  80. <code>0x03</code> without any of the usual packet overhead described in
  81. the Overview section (see <a href="Overview.html#Overview">Overview</a>). When a <code>0x03</code> byte is
  82. transmitted as part of a packet, it is considered to be packet data
  83. and does <em>not</em> represent an interrupt. E.g., an &lsquo;<samp>X</samp>&rsquo; packet
  84. (see <a href="Packets.html#X-packet">X packet</a>), used for binary downloads, may include an unescaped
  85. <code>0x03</code> as part of its packet.
  86. </p>
  87. <p><code>BREAK</code> followed by <code>g</code> is also known as Magic SysRq g.
  88. When Linux kernel receives this sequence from serial port,
  89. it stops execution and connects to gdb.
  90. </p>
  91. <p>In non-stop mode, because packet resumptions are asynchronous
  92. (see <a href="Packets.html#vCont-packet">vCont packet</a>), <small>GDB</small> is always free to send a remote
  93. command to the remote stub, even when the target is running. For that
  94. reason, <small>GDB</small> instead sends a regular packet (see <a href="Packets.html#vCtrlC-packet">vCtrlC packet</a>) with the usual packet framing instead of the single byte
  95. <code>0x03</code>.
  96. </p>
  97. <p>Stubs are not required to recognize these interrupt mechanisms and the
  98. precise meaning associated with receipt of the interrupt is
  99. implementation defined. If the target supports debugging of multiple
  100. threads and/or processes, it should attempt to interrupt all
  101. currently-executing threads and processes.
  102. If the stub is successful at interrupting the
  103. running program, it should send one of the stop
  104. reply packets (see <a href="Stop-Reply-Packets.html#Stop-Reply-Packets">Stop Reply Packets</a>) to <small>GDB</small> as a result
  105. of successfully stopping the program in all-stop mode, and a stop reply
  106. for each stopped thread in non-stop mode.
  107. Interrupts received while the
  108. program is stopped are queued and the program will be interrupted when
  109. it is resumed next time.
  110. </p>
  111. <hr>
  112. <div class="header">
  113. <p>
  114. Next: <a href="Notification-Packets.html#Notification-Packets" accesskey="n" rel="next">Notification Packets</a>, Previous: <a href="Host-I_002fO-Packets.html#Host-I_002fO-Packets" accesskey="p" rel="prev">Host I/O Packets</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</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>
  115. </div>
  116. </body>
  117. </html>