hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Free Software" and "Free Software Needs
Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
and with the Back-Cover Texts as in (a) below.
 
(a) The FSF's Back-Cover Text is: "You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: Signaling</title>
 
<meta name="description" content="Debugging with GDB: Signaling">
<meta name="keywords" content="Debugging with GDB: Signaling">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Altering.html#Altering" rel="up" title="Altering">
<link href="Returning.html#Returning" rel="next" title="Returning">
<link href="Jumping.html#Jumping" rel="previous" title="Jumping">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Signaling"></a>
<div class="header">
<p>
Next: <a href="Returning.html#Returning" accesskey="n" rel="next">Returning</a>, Previous: <a href="Jumping.html#Jumping" accesskey="p" rel="previous">Jumping</a>, Up: <a href="Altering.html#Altering" accesskey="u" rel="up">Altering</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>
</div>
<hr>
<a name="Giving-Your-Program-a-Signal"></a>
<h3 class="section">17.3 Giving Your Program a Signal</h3>
<a name="index-deliver-a-signal-to-a-program"></a>
 
<dl compact="compact">
<dd><a name="index-signal"></a>
</dd>
<dt><code>signal <var>signal</var></code></dt>
<dd><p>Resume execution where your program is stopped, but immediately give it the
signal <var>signal</var>.  The <var>signal</var> can be the name or the number of a
signal.  For example, on many systems <code>signal 2</code> and <code>signal
SIGINT</code> are both ways of sending an interrupt signal.
</p>
<p>Alternatively, if <var>signal</var> is zero, continue execution without
giving a signal.  This is useful when your program stopped on account of
a signal and would ordinarily see the signal when resumed with the
<code>continue</code> command; &lsquo;<samp>signal 0</samp>&rsquo; causes it to resume without a
signal.
</p>
<p><em>Note:</em> When resuming a multi-threaded program, <var>signal</var> is
delivered to the currently selected thread, not the thread that last
reported a stop.  This includes the situation where a thread was
stopped due to a signal.  So if you want to continue execution
suppressing the signal that stopped a thread, you should select that
same thread before issuing the &lsquo;<samp>signal 0</samp>&rsquo; command.  If you issue
the &lsquo;<samp>signal 0</samp>&rsquo; command with another thread as the selected one,
<small>GDB</small> detects that and asks for confirmation.
</p>
<p>Invoking the <code>signal</code> command is not the same as invoking the
<code>kill</code> utility from the shell.  Sending a signal with <code>kill</code>
causes <small>GDB</small> to decide what to do with the signal depending on
the signal handling tables (see <a href="Signals.html#Signals">Signals</a>).  The <code>signal</code> command
passes the signal directly to your program.
</p>
<p><code>signal</code> does not repeat when you press <tt class="key">RET</tt> a second time
after executing the command.
</p>
<a name="index-queue_002dsignal"></a>
</dd>
<dt><code>queue-signal <var>signal</var></code></dt>
<dd><p>Queue <var>signal</var> to be delivered immediately to the current thread
when execution of the thread resumes.  The <var>signal</var> can be the name or
the number of a signal.  For example, on many systems <code>signal 2</code> and
<code>signal SIGINT</code> are both ways of sending an interrupt signal.
The handling of the signal must be set to pass the signal to the program,
otherwise <small>GDB</small> will report an error.
You can control the handling of signals from <small>GDB</small> with the
<code>handle</code> command (see <a href="Signals.html#Signals">Signals</a>).
</p>
<p>Alternatively, if <var>signal</var> is zero, any currently queued signal
for the current thread is discarded and when execution resumes no signal
will be delivered.  This is useful when your program stopped on account
of a signal and would ordinarily see the signal when resumed with the
<code>continue</code> command.
</p>
<p>This command differs from the <code>signal</code> command in that the signal
is just queued, execution is not resumed.  And <code>queue-signal</code> cannot
be used to pass a signal whose handling state has been set to <code>nopass</code>
(see <a href="Signals.html#Signals">Signals</a>).
</p></dd>
</dl>
 
<p>See <a href="Signals.html#stepping-into-signal-handlers">stepping into signal handlers</a>, for information on how stepping
commands behave when the thread has a signal queued.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Returning.html#Returning" accesskey="n" rel="next">Returning</a>, Previous: <a href="Jumping.html#Jumping" accesskey="p" rel="previous">Jumping</a>, Up: <a href="Altering.html#Altering" accesskey="u" rel="up">Altering</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>
</div>
 
 
 
</body>
</html>