Interrupts.html 6.7 KB

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