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> [<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 ‘<samp>Ctrl-C</samp>’, 76<code>BREAK</code> or a <code>BREAK</code> followed by <code>g</code>, control of which 77is specified via <small>GDB</small>’s ‘<samp>interrupt-sequence</samp>’. 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>‘<samp>Ctrl-C</samp>’, 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 ‘<samp>X</samp>’ 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> [<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