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-2021 Free Software Foundation, Inc.
4
5Permission is granted to copy, distribute and/or modify this document
6under the terms of the GNU Free Documentation License, Version 1.3 or
7any later version published by the Free Software Foundation; with the
8Invariant Sections being "Free Software" and "Free Software Needs
9Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
10and with the Back-Cover Texts as in (a) below.
11
12(a) The FSF's Back-Cover Text is: "You are free to copy and modify
13this GNU Manual.  Buying copies from GNU Press supports the FSF in
14developing GNU and promoting software freedom." -->
15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
16<head>
17<title>Debugging with GDB: Interrupts</title>
18
19<meta name="description" content="Debugging with GDB: Interrupts">
20<meta name="keywords" content="Debugging with GDB: Interrupts">
21<meta name="resource-type" content="document">
22<meta name="distribution" content="global">
23<meta name="Generator" content="makeinfo">
24<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
25<link href="index.html#Top" rel="start" title="Top">
26<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
28<link href="Remote-Protocol.html#Remote-Protocol" rel="up" title="Remote Protocol">
29<link href="Notification-Packets.html#Notification-Packets" rel="next" title="Notification Packets">
30<link href="Host-I_002fO-Packets.html#Host-I_002fO-Packets" rel="previous" title="Host I/O Packets">
31<style type="text/css">
32<!--
33a.summary-letter {text-decoration: none}
34blockquote.smallquotation {font-size: smaller}
35div.display {margin-left: 3.2em}
36div.example {margin-left: 3.2em}
37div.indentedblock {margin-left: 3.2em}
38div.lisp {margin-left: 3.2em}
39div.smalldisplay {margin-left: 3.2em}
40div.smallexample {margin-left: 3.2em}
41div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
42div.smalllisp {margin-left: 3.2em}
43kbd {font-style:oblique}
44pre.display {font-family: inherit}
45pre.format {font-family: inherit}
46pre.menu-comment {font-family: serif}
47pre.menu-preformatted {font-family: serif}
48pre.smalldisplay {font-family: inherit; font-size: smaller}
49pre.smallexample {font-size: smaller}
50pre.smallformat {font-family: inherit; font-size: smaller}
51pre.smalllisp {font-size: smaller}
52span.nocodebreak {white-space:nowrap}
53span.nolinebreak {white-space:nowrap}
54span.roman {font-family:serif; font-weight:normal}
55span.sansserif {font-family:sans-serif; font-weight:normal}
56ul.no-bullet {list-style: none}
57-->
58</style>
59
60
61</head>
62
63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
64<a name="Interrupts"></a>
65<div class="header">
66<p>
67Next: <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>
68</div>
69<hr>
70<a name="Interrupts-1"></a>
71<h3 class="section">E.8 Interrupts</h3>
72<a name="index-interrupts-_0028remote-protocol_0029"></a>
73<a name="interrupting-remote-targets"></a>
74<p>In all-stop mode, when a program on the remote target is running,
75<small>GDB</small> may attempt to interrupt it by sending a &lsquo;<samp>Ctrl-C</samp>&rsquo;,
76<code>BREAK</code> or a <code>BREAK</code> followed by <code>g</code>, control of which
77is specified via <small>GDB</small>&rsquo;s &lsquo;<samp>interrupt-sequence</samp>&rsquo;.
78</p>
79<p>The precise meaning of <code>BREAK</code> is defined by the transport
80mechanism and may, in fact, be undefined.  <small>GDB</small> does not
81currently define a <code>BREAK</code> mechanism for any of the network
82interfaces except for TCP, in which case <small>GDB</small> sends the
83<code>telnet</code> BREAK sequence.
84</p>
85<p>&lsquo;<samp>Ctrl-C</samp>&rsquo;, on the other hand, is defined and implemented for all
86transport mechanisms.  It is represented by sending the single byte
87<code>0x03</code> without any of the usual packet overhead described in
88the Overview section (see <a href="Overview.html#Overview">Overview</a>).  When a <code>0x03</code> byte is
89transmitted as part of a packet, it is considered to be packet data
90and does <em>not</em> represent an interrupt.  E.g., an &lsquo;<samp>X</samp>&rsquo; packet
91(see <a href="Packets.html#X-packet">X packet</a>), used for binary downloads, may include an unescaped
92<code>0x03</code> as part of its packet.
93</p>
94<p><code>BREAK</code> followed by <code>g</code> is also known as Magic SysRq g.
95When Linux kernel receives this sequence from serial port,
96it stops execution and connects to gdb.
97</p>
98<p>In non-stop mode, because packet resumptions are asynchronous
99(see <a href="Packets.html#vCont-packet">vCont packet</a>), <small>GDB</small> is always free to send a remote
100command to the remote stub, even when the target is running.  For that
101reason, <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
102<code>0x03</code>.
103</p>
104<p>Stubs are not required to recognize these interrupt mechanisms and the
105precise meaning associated with receipt of the interrupt is
106implementation defined.  If the target supports debugging of multiple
107threads and/or processes, it should attempt to interrupt all
108currently-executing threads and processes.
109If the stub is successful at interrupting the
110running program, it should send one of the stop
111reply packets (see <a href="Stop-Reply-Packets.html#Stop-Reply-Packets">Stop Reply Packets</a>) to <small>GDB</small> as a result
112of successfully stopping the program in all-stop mode, and a stop reply
113for each stopped thread in non-stop mode.
114Interrupts received while the
115program is stopped are queued and the program will be interrupted when
116it is resumed next time.
117</p>
118<hr>
119<div class="header">
120<p>
121Next: <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>
122</div>
123
124
125
126</body>
127</html>
128