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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<!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: Observer Mode</title>
 
<meta name="description" content="Debugging with GDB: Observer Mode">
<meta name="keywords" content="Debugging with GDB: Observer Mode">
<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="Thread-Stops.html#Thread-Stops" rel="up" title="Thread Stops">
<link href="Reverse-Execution.html#Reverse-Execution" rel="next" title="Reverse Execution">
<link href="Interrupted-System-Calls.html#Interrupted-System-Calls" rel="previous" title="Interrupted System Calls">
<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="Observer-Mode"></a>
<div class="header">
<p>
Previous: <a href="Interrupted-System-Calls.html#Interrupted-System-Calls" accesskey="p" rel="previous">Interrupted System Calls</a>, Up: <a href="Thread-Stops.html#Thread-Stops" accesskey="u" rel="up">Thread Stops</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="Observer-Mode-1"></a>
<h4 class="subsection">5.5.6 Observer Mode</h4>
 
<p>If you want to build on non-stop mode and observe program behavior
without any chance of disruption by <small>GDB</small>, you can set
variables to disable all of the debugger&rsquo;s attempts to modify state,
whether by writing memory, inserting breakpoints, etc.  These operate
at a low level, intercepting operations from all commands.
</p>
<p>When all of these are set to <code>off</code>, then <small>GDB</small> is said to
be <em>observer mode</em>.  As a convenience, the variable
<code>observer</code> can be set to disable these, plus enable non-stop
mode.
</p>
<p>Note that <small>GDB</small> will not prevent you from making nonsensical
combinations of these settings. For instance, if you have enabled
<code>may-insert-breakpoints</code> but disabled <code>may-write-memory</code>,
then breakpoints that work by writing trap instructions into the code
stream will still not be able to be placed.
</p>
<dl compact="compact">
<dd>
<a name="index-observer"></a>
</dd>
<dt><code>set observer on</code></dt>
<dt><code>set observer off</code></dt>
<dd><p>When set to <code>on</code>, this disables all the permission variables
below (except for <code>insert-fast-tracepoints</code>), plus enables
non-stop debugging.  Setting this to <code>off</code> switches back to
normal debugging, though remaining in non-stop mode.
</p>
</dd>
<dt><code>show observer</code></dt>
<dd><p>Show whether observer mode is on or off.
</p>
<a name="index-may_002dwrite_002dregisters"></a>
</dd>
<dt><code>set may-write-registers on</code></dt>
<dt><code>set may-write-registers off</code></dt>
<dd><p>This controls whether <small>GDB</small> will attempt to alter the values of
registers, such as with assignment expressions in <code>print</code>, or the
<code>jump</code> command.  It defaults to <code>on</code>.
</p>
</dd>
<dt><code>show may-write-registers</code></dt>
<dd><p>Show the current permission to write registers.
</p>
<a name="index-may_002dwrite_002dmemory"></a>
</dd>
<dt><code>set may-write-memory on</code></dt>
<dt><code>set may-write-memory off</code></dt>
<dd><p>This controls whether <small>GDB</small> will attempt to alter the contents
of memory, such as with assignment expressions in <code>print</code>.  It
defaults to <code>on</code>.
</p>
</dd>
<dt><code>show may-write-memory</code></dt>
<dd><p>Show the current permission to write memory.
</p>
<a name="index-may_002dinsert_002dbreakpoints"></a>
</dd>
<dt><code>set may-insert-breakpoints on</code></dt>
<dt><code>set may-insert-breakpoints off</code></dt>
<dd><p>This controls whether <small>GDB</small> will attempt to insert breakpoints.
This affects all breakpoints, including internal breakpoints defined
by <small>GDB</small>.  It defaults to <code>on</code>.
</p>
</dd>
<dt><code>show may-insert-breakpoints</code></dt>
<dd><p>Show the current permission to insert breakpoints.
</p>
<a name="index-may_002dinsert_002dtracepoints"></a>
</dd>
<dt><code>set may-insert-tracepoints on</code></dt>
<dt><code>set may-insert-tracepoints off</code></dt>
<dd><p>This controls whether <small>GDB</small> will attempt to insert (regular)
tracepoints at the beginning of a tracing experiment.  It affects only
non-fast tracepoints, fast tracepoints being under the control of
<code>may-insert-fast-tracepoints</code>.  It defaults to <code>on</code>.
</p>
</dd>
<dt><code>show may-insert-tracepoints</code></dt>
<dd><p>Show the current permission to insert tracepoints.
</p>
<a name="index-may_002dinsert_002dfast_002dtracepoints"></a>
</dd>
<dt><code>set may-insert-fast-tracepoints on</code></dt>
<dt><code>set may-insert-fast-tracepoints off</code></dt>
<dd><p>This controls whether <small>GDB</small> will attempt to insert fast
tracepoints at the beginning of a tracing experiment.  It affects only
fast tracepoints, regular (non-fast) tracepoints being under the
control of <code>may-insert-tracepoints</code>.  It defaults to <code>on</code>.
</p>
</dd>
<dt><code>show may-insert-fast-tracepoints</code></dt>
<dd><p>Show the current permission to insert fast tracepoints.
</p>
<a name="index-may_002dinterrupt"></a>
</dd>
<dt><code>set may-interrupt on</code></dt>
<dt><code>set may-interrupt off</code></dt>
<dd><p>This controls whether <small>GDB</small> will attempt to interrupt or stop
program execution.  When this variable is <code>off</code>, the
<code>interrupt</code> command will have no effect, nor will
<kbd>Ctrl-c</kbd>. It defaults to <code>on</code>.
</p>
</dd>
<dt><code>show may-interrupt</code></dt>
<dd><p>Show the current permission to interrupt or stop the program.
</p>
</dd>
</dl>
 
<hr>
<div class="header">
<p>
Previous: <a href="Interrupted-System-Calls.html#Interrupted-System-Calls" accesskey="p" rel="previous">Interrupted System Calls</a>, Up: <a href="Thread-Stops.html#Thread-Stops" accesskey="u" rel="up">Thread Stops</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>