1 |
578 |
markom |
This is ./gdb.info, produced by makeinfo version 4.0 from gdb.texinfo.
|
2 |
|
|
|
3 |
|
|
INFO-DIR-SECTION Programming & development tools.
|
4 |
|
|
START-INFO-DIR-ENTRY
|
5 |
|
|
* Gdb: (gdb). The GNU debugger.
|
6 |
|
|
END-INFO-DIR-ENTRY
|
7 |
|
|
|
8 |
|
|
This file documents the GNU debugger GDB.
|
9 |
|
|
|
10 |
|
|
This is the Ninth Edition, April 2001, of `Debugging with GDB: the
|
11 |
|
|
GNU Source-Level Debugger' for GDB Version 20010707.
|
12 |
|
|
|
13 |
|
|
Copyright (C)
|
14 |
|
|
1988,1989,1990,1991,1992,1993,1994,1995,1996,1998,1999,2000,2001
|
15 |
|
|
Free Software Foundation, Inc.
|
16 |
|
|
|
17 |
|
|
Permission is granted to copy, distribute and/or modify this document
|
18 |
|
|
under the terms of the GNU Free Documentation License, Version 1.1 or
|
19 |
|
|
any later version published by the Free Software Foundation; with the
|
20 |
|
|
Invariant Sections being "A Sample GDB Session" and "Free Software",
|
21 |
|
|
with the Front-Cover texts being "A GNU Manual," and with the
|
22 |
|
|
Back-Cover Texts as in (a) below.
|
23 |
|
|
|
24 |
|
|
(a) The FSF's Back-Cover Text is: "You have freedom to copy and
|
25 |
|
|
modify this GNU Manual, like GNU software. Copies published by the Free
|
26 |
|
|
Software Foundation raise funds for GNU development."
|
27 |
|
|
|
28 |
|
|
|
29 |
|
|
File: gdb.info, Node: Environment, Next: Working Directory, Prev: Arguments, Up: Running
|
30 |
|
|
|
31 |
|
|
Your program's environment
|
32 |
|
|
==========================
|
33 |
|
|
|
34 |
|
|
The "environment" consists of a set of environment variables and
|
35 |
|
|
their values. Environment variables conventionally record such things
|
36 |
|
|
as your user name, your home directory, your terminal type, and your
|
37 |
|
|
search path for programs to run. Usually you set up environment
|
38 |
|
|
variables with the shell and they are inherited by all the other
|
39 |
|
|
programs you run. When debugging, it can be useful to try running your
|
40 |
|
|
program with a modified environment without having to start GDB over
|
41 |
|
|
again.
|
42 |
|
|
|
43 |
|
|
`path DIRECTORY'
|
44 |
|
|
Add DIRECTORY to the front of the `PATH' environment variable (the
|
45 |
|
|
search path for executables) that will be passed to your program.
|
46 |
|
|
The value of `PATH' used by GDB does not change. You may specify
|
47 |
|
|
several directory names, separated by whitespace or by a
|
48 |
|
|
system-dependent separator character (`:' on Unix, `;' on MS-DOS
|
49 |
|
|
and MS-Windows). If DIRECTORY is already in the path, it is moved
|
50 |
|
|
to the front, so it is searched sooner.
|
51 |
|
|
|
52 |
|
|
You can use the string `$cwd' to refer to whatever is the current
|
53 |
|
|
working directory at the time GDB searches the path. If you use
|
54 |
|
|
`.' instead, it refers to the directory where you executed the
|
55 |
|
|
`path' command. GDB replaces `.' in the DIRECTORY argument (with
|
56 |
|
|
the current path) before adding DIRECTORY to the search path.
|
57 |
|
|
|
58 |
|
|
`show paths'
|
59 |
|
|
Display the list of search paths for executables (the `PATH'
|
60 |
|
|
environment variable).
|
61 |
|
|
|
62 |
|
|
`show environment [VARNAME]'
|
63 |
|
|
Print the value of environment variable VARNAME to be given to
|
64 |
|
|
your program when it starts. If you do not supply VARNAME, print
|
65 |
|
|
the names and values of all environment variables to be given to
|
66 |
|
|
your program. You can abbreviate `environment' as `env'.
|
67 |
|
|
|
68 |
|
|
`set environment VARNAME [=VALUE]'
|
69 |
|
|
Set environment variable VARNAME to VALUE. The value changes for
|
70 |
|
|
your program only, not for GDB itself. VALUE may be any string;
|
71 |
|
|
the values of environment variables are just strings, and any
|
72 |
|
|
interpretation is supplied by your program itself. The VALUE
|
73 |
|
|
parameter is optional; if it is eliminated, the variable is set to
|
74 |
|
|
a null value.
|
75 |
|
|
|
76 |
|
|
For example, this command:
|
77 |
|
|
|
78 |
|
|
set env USER = foo
|
79 |
|
|
|
80 |
|
|
tells the debugged program, when subsequently run, that its user
|
81 |
|
|
is named `foo'. (The spaces around `=' are used for clarity here;
|
82 |
|
|
they are not actually required.)
|
83 |
|
|
|
84 |
|
|
`unset environment VARNAME'
|
85 |
|
|
Remove variable VARNAME from the environment to be passed to your
|
86 |
|
|
program. This is different from `set env VARNAME ='; `unset
|
87 |
|
|
environment' removes the variable from the environment, rather
|
88 |
|
|
than assigning it an empty value.
|
89 |
|
|
|
90 |
|
|
_Warning:_ On Unix systems, GDB runs your program using the shell
|
91 |
|
|
indicated by your `SHELL' environment variable if it exists (or
|
92 |
|
|
`/bin/sh' if not). If your `SHELL' variable names a shell that runs an
|
93 |
|
|
initialization file--such as `.cshrc' for C-shell, or `.bashrc' for
|
94 |
|
|
BASH--any variables you set in that file affect your program. You may
|
95 |
|
|
wish to move setting of environment variables to files that are only
|
96 |
|
|
run when you sign on, such as `.login' or `.profile'.
|
97 |
|
|
|
98 |
|
|
|
99 |
|
|
File: gdb.info, Node: Working Directory, Next: Input/Output, Prev: Environment, Up: Running
|
100 |
|
|
|
101 |
|
|
Your program's working directory
|
102 |
|
|
================================
|
103 |
|
|
|
104 |
|
|
Each time you start your program with `run', it inherits its working
|
105 |
|
|
directory from the current working directory of GDB. The GDB working
|
106 |
|
|
directory is initially whatever it inherited from its parent process
|
107 |
|
|
(typically the shell), but you can specify a new working directory in
|
108 |
|
|
GDB with the `cd' command.
|
109 |
|
|
|
110 |
|
|
The GDB working directory also serves as a default for the commands
|
111 |
|
|
that specify files for GDB to operate on. *Note Commands to specify
|
112 |
|
|
files: Files.
|
113 |
|
|
|
114 |
|
|
`cd DIRECTORY'
|
115 |
|
|
Set the GDB working directory to DIRECTORY.
|
116 |
|
|
|
117 |
|
|
`pwd'
|
118 |
|
|
Print the GDB working directory.
|
119 |
|
|
|
120 |
|
|
|
121 |
|
|
File: gdb.info, Node: Input/Output, Next: Attach, Prev: Working Directory, Up: Running
|
122 |
|
|
|
123 |
|
|
Your program's input and output
|
124 |
|
|
===============================
|
125 |
|
|
|
126 |
|
|
By default, the program you run under GDB does input and output to
|
127 |
|
|
the same terminal that GDB uses. GDB switches the terminal to its own
|
128 |
|
|
terminal modes to interact with you, but it records the terminal modes
|
129 |
|
|
your program was using and switches back to them when you continue
|
130 |
|
|
running your program.
|
131 |
|
|
|
132 |
|
|
`info terminal'
|
133 |
|
|
Displays information recorded by GDB about the terminal modes your
|
134 |
|
|
program is using.
|
135 |
|
|
|
136 |
|
|
You can redirect your program's input and/or output using shell
|
137 |
|
|
redirection with the `run' command. For example,
|
138 |
|
|
|
139 |
|
|
run > outfile
|
140 |
|
|
|
141 |
|
|
starts your program, diverting its output to the file `outfile'.
|
142 |
|
|
|
143 |
|
|
Another way to specify where your program should do input and output
|
144 |
|
|
is with the `tty' command. This command accepts a file name as
|
145 |
|
|
argument, and causes this file to be the default for future `run'
|
146 |
|
|
commands. It also resets the controlling terminal for the child
|
147 |
|
|
process, for future `run' commands. For example,
|
148 |
|
|
|
149 |
|
|
tty /dev/ttyb
|
150 |
|
|
|
151 |
|
|
directs that processes started with subsequent `run' commands default
|
152 |
|
|
to do input and output on the terminal `/dev/ttyb' and have that as
|
153 |
|
|
their controlling terminal.
|
154 |
|
|
|
155 |
|
|
An explicit redirection in `run' overrides the `tty' command's
|
156 |
|
|
effect on the input/output device, but not its effect on the controlling
|
157 |
|
|
terminal.
|
158 |
|
|
|
159 |
|
|
When you use the `tty' command or redirect input in the `run'
|
160 |
|
|
command, only the input _for your program_ is affected. The input for
|
161 |
|
|
GDB still comes from your terminal.
|
162 |
|
|
|
163 |
|
|
|
164 |
|
|
File: gdb.info, Node: Attach, Next: Kill Process, Prev: Input/Output, Up: Running
|
165 |
|
|
|
166 |
|
|
Debugging an already-running process
|
167 |
|
|
====================================
|
168 |
|
|
|
169 |
|
|
`attach PROCESS-ID'
|
170 |
|
|
This command attaches to a running process--one that was started
|
171 |
|
|
outside GDB. (`info files' shows your active targets.) The
|
172 |
|
|
command takes as argument a process ID. The usual way to find out
|
173 |
|
|
the process-id of a Unix process is with the `ps' utility, or with
|
174 |
|
|
the `jobs -l' shell command.
|
175 |
|
|
|
176 |
|
|
`attach' does not repeat if you press a second time after
|
177 |
|
|
executing the command.
|
178 |
|
|
|
179 |
|
|
To use `attach', your program must be running in an environment
|
180 |
|
|
which supports processes; for example, `attach' does not work for
|
181 |
|
|
programs on bare-board targets that lack an operating system. You must
|
182 |
|
|
also have permission to send the process a signal.
|
183 |
|
|
|
184 |
|
|
When you use `attach', the debugger finds the program running in the
|
185 |
|
|
process first by looking in the current working directory, then (if the
|
186 |
|
|
program is not found) by using the source file search path (*note
|
187 |
|
|
Specifying source directories: Source Path.). You can also use the
|
188 |
|
|
`file' command to load the program. *Note Commands to Specify Files:
|
189 |
|
|
Files.
|
190 |
|
|
|
191 |
|
|
The first thing GDB does after arranging to debug the specified
|
192 |
|
|
process is to stop it. You can examine and modify an attached process
|
193 |
|
|
with all the GDB commands that are ordinarily available when you start
|
194 |
|
|
processes with `run'. You can insert breakpoints; you can step and
|
195 |
|
|
continue; you can modify storage. If you would rather the process
|
196 |
|
|
continue running, you may use the `continue' command after attaching
|
197 |
|
|
GDB to the process.
|
198 |
|
|
|
199 |
|
|
`detach'
|
200 |
|
|
When you have finished debugging the attached process, you can use
|
201 |
|
|
the `detach' command to release it from GDB control. Detaching
|
202 |
|
|
the process continues its execution. After the `detach' command,
|
203 |
|
|
that process and GDB become completely independent once more, and
|
204 |
|
|
you are ready to `attach' another process or start one with `run'.
|
205 |
|
|
`detach' does not repeat if you press again after executing
|
206 |
|
|
the command.
|
207 |
|
|
|
208 |
|
|
If you exit GDB or use the `run' command while you have an attached
|
209 |
|
|
process, you kill that process. By default, GDB asks for confirmation
|
210 |
|
|
if you try to do either of these things; you can control whether or not
|
211 |
|
|
you need to confirm by using the `set confirm' command (*note Optional
|
212 |
|
|
warnings and messages: Messages/Warnings.).
|
213 |
|
|
|
214 |
|
|
|
215 |
|
|
File: gdb.info, Node: Kill Process, Next: Threads, Prev: Attach, Up: Running
|
216 |
|
|
|
217 |
|
|
Killing the child process
|
218 |
|
|
=========================
|
219 |
|
|
|
220 |
|
|
`kill'
|
221 |
|
|
Kill the child process in which your program is running under GDB.
|
222 |
|
|
|
223 |
|
|
This command is useful if you wish to debug a core dump instead of a
|
224 |
|
|
running process. GDB ignores any core dump file while your program is
|
225 |
|
|
running.
|
226 |
|
|
|
227 |
|
|
On some operating systems, a program cannot be executed outside GDB
|
228 |
|
|
while you have breakpoints set on it inside GDB. You can use the
|
229 |
|
|
`kill' command in this situation to permit running your program outside
|
230 |
|
|
the debugger.
|
231 |
|
|
|
232 |
|
|
The `kill' command is also useful if you wish to recompile and
|
233 |
|
|
relink your program, since on many systems it is impossible to modify an
|
234 |
|
|
executable file while it is running in a process. In this case, when
|
235 |
|
|
you next type `run', GDB notices that the file has changed, and reads
|
236 |
|
|
the symbol table again (while trying to preserve your current
|
237 |
|
|
breakpoint settings).
|
238 |
|
|
|
239 |
|
|
|
240 |
|
|
File: gdb.info, Node: Threads, Next: Processes, Prev: Kill Process, Up: Running
|
241 |
|
|
|
242 |
|
|
Debugging programs with multiple threads
|
243 |
|
|
========================================
|
244 |
|
|
|
245 |
|
|
In some operating systems, such as HP-UX and Solaris, a single
|
246 |
|
|
program may have more than one "thread" of execution. The precise
|
247 |
|
|
semantics of threads differ from one operating system to another, but
|
248 |
|
|
in general the threads of a single program are akin to multiple
|
249 |
|
|
processes--except that they share one address space (that is, they can
|
250 |
|
|
all examine and modify the same variables). On the other hand, each
|
251 |
|
|
thread has its own registers and execution stack, and perhaps private
|
252 |
|
|
memory.
|
253 |
|
|
|
254 |
|
|
GDB provides these facilities for debugging multi-thread programs:
|
255 |
|
|
|
256 |
|
|
* automatic notification of new threads
|
257 |
|
|
|
258 |
|
|
* `thread THREADNO', a command to switch among threads
|
259 |
|
|
|
260 |
|
|
* `info threads', a command to inquire about existing threads
|
261 |
|
|
|
262 |
|
|
* `thread apply [THREADNO] [ALL] ARGS', a command to apply a command
|
263 |
|
|
to a list of threads
|
264 |
|
|
|
265 |
|
|
* thread-specific breakpoints
|
266 |
|
|
|
267 |
|
|
_Warning:_ These facilities are not yet available on every GDB
|
268 |
|
|
configuration where the operating system supports threads. If
|
269 |
|
|
your GDB does not support threads, these commands have no effect.
|
270 |
|
|
For example, a system without thread support shows no output from
|
271 |
|
|
`info threads', and always rejects the `thread' command, like this:
|
272 |
|
|
|
273 |
|
|
(gdb) info threads
|
274 |
|
|
(gdb) thread 1
|
275 |
|
|
Thread ID 1 not known. Use the "info threads" command to
|
276 |
|
|
see the IDs of currently known threads.
|
277 |
|
|
|
278 |
|
|
The GDB thread debugging facility allows you to observe all threads
|
279 |
|
|
while your program runs--but whenever GDB takes control, one thread in
|
280 |
|
|
particular is always the focus of debugging. This thread is called the
|
281 |
|
|
"current thread". Debugging commands show program information from the
|
282 |
|
|
perspective of the current thread.
|
283 |
|
|
|
284 |
|
|
Whenever GDB detects a new thread in your program, it displays the
|
285 |
|
|
target system's identification for the thread with a message in the
|
286 |
|
|
form `[New SYSTAG]'. SYSTAG is a thread identifier whose form varies
|
287 |
|
|
depending on the particular system. For example, on LynxOS, you might
|
288 |
|
|
see
|
289 |
|
|
|
290 |
|
|
[New process 35 thread 27]
|
291 |
|
|
|
292 |
|
|
when GDB notices a new thread. In contrast, on an SGI system, the
|
293 |
|
|
SYSTAG is simply something like `process 368', with no further
|
294 |
|
|
qualifier.
|
295 |
|
|
|
296 |
|
|
For debugging purposes, GDB associates its own thread number--always
|
297 |
|
|
a single integer--with each thread in your program.
|
298 |
|
|
|
299 |
|
|
`info threads'
|
300 |
|
|
Display a summary of all threads currently in your program. GDB
|
301 |
|
|
displays for each thread (in this order):
|
302 |
|
|
|
303 |
|
|
1. the thread number assigned by GDB
|
304 |
|
|
|
305 |
|
|
2. the target system's thread identifier (SYSTAG)
|
306 |
|
|
|
307 |
|
|
3. the current stack frame summary for that thread
|
308 |
|
|
|
309 |
|
|
An asterisk `*' to the left of the GDB thread number indicates the
|
310 |
|
|
current thread.
|
311 |
|
|
|
312 |
|
|
For example,
|
313 |
|
|
|
314 |
|
|
(gdb) info threads
|
315 |
|
|
3 process 35 thread 27 0x34e5 in sigpause ()
|
316 |
|
|
2 process 35 thread 23 0x34e5 in sigpause ()
|
317 |
|
|
* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
|
318 |
|
|
at threadtest.c:68
|
319 |
|
|
|
320 |
|
|
On HP-UX systems:
|
321 |
|
|
|
322 |
|
|
For debugging purposes, GDB associates its own thread number--a
|
323 |
|
|
small integer assigned in thread-creation order--with each thread in
|
324 |
|
|
your program.
|
325 |
|
|
|
326 |
|
|
Whenever GDB detects a new thread in your program, it displays both
|
327 |
|
|
GDB's thread number and the target system's identification for the
|
328 |
|
|
thread with a message in the form `[New SYSTAG]'. SYSTAG is a thread
|
329 |
|
|
identifier whose form varies depending on the particular system. For
|
330 |
|
|
example, on HP-UX, you see
|
331 |
|
|
|
332 |
|
|
[New thread 2 (system thread 26594)]
|
333 |
|
|
|
334 |
|
|
when GDB notices a new thread.
|
335 |
|
|
|
336 |
|
|
`info threads'
|
337 |
|
|
Display a summary of all threads currently in your program. GDB
|
338 |
|
|
displays for each thread (in this order):
|
339 |
|
|
|
340 |
|
|
1. the thread number assigned by GDB
|
341 |
|
|
|
342 |
|
|
2. the target system's thread identifier (SYSTAG)
|
343 |
|
|
|
344 |
|
|
3. the current stack frame summary for that thread
|
345 |
|
|
|
346 |
|
|
An asterisk `*' to the left of the GDB thread number indicates the
|
347 |
|
|
current thread.
|
348 |
|
|
|
349 |
|
|
For example,
|
350 |
|
|
|
351 |
|
|
(gdb) info threads
|
352 |
|
|
* 3 system thread 26607 worker (wptr=0x7b09c318 "@") \
|
353 |
|
|
|
354 |
|
|
at quicksort.c:137
|
355 |
|
|
2 system thread 26606 0x7b0030d8 in __ksleep () \
|
356 |
|
|
|
357 |
|
|
from /usr/lib/libc.2
|
358 |
|
|
1 system thread 27905 0x7b003498 in _brk () \
|
359 |
|
|
|
360 |
|
|
from /usr/lib/libc.2
|
361 |
|
|
|
362 |
|
|
`thread THREADNO'
|
363 |
|
|
Make thread number THREADNO the current thread. The command
|
364 |
|
|
argument THREADNO is the internal GDB thread number, as shown in
|
365 |
|
|
the first field of the `info threads' display. GDB responds by
|
366 |
|
|
displaying the system identifier of the thread you selected, and
|
367 |
|
|
its current stack frame summary:
|
368 |
|
|
|
369 |
|
|
(gdb) thread 2
|
370 |
|
|
[Switching to process 35 thread 23]
|
371 |
|
|
0x34e5 in sigpause ()
|
372 |
|
|
|
373 |
|
|
As with the `[New ...]' message, the form of the text after
|
374 |
|
|
`Switching to' depends on your system's conventions for identifying
|
375 |
|
|
threads.
|
376 |
|
|
|
377 |
|
|
`thread apply [THREADNO] [ALL] ARGS'
|
378 |
|
|
The `thread apply' command allows you to apply a command to one or
|
379 |
|
|
more threads. Specify the numbers of the threads that you want
|
380 |
|
|
affected with the command argument THREADNO. THREADNO is the
|
381 |
|
|
internal GDB thread number, as shown in the first field of the
|
382 |
|
|
`info threads' display. To apply a command to all threads, use
|
383 |
|
|
`thread apply all' ARGS.
|
384 |
|
|
|
385 |
|
|
Whenever GDB stops your program, due to a breakpoint or a signal, it
|
386 |
|
|
automatically selects the thread where that breakpoint or signal
|
387 |
|
|
happened. GDB alerts you to the context switch with a message of the
|
388 |
|
|
form `[Switching to SYSTAG]' to identify the thread.
|
389 |
|
|
|
390 |
|
|
*Note Stopping and starting multi-thread programs: Thread Stops, for
|
391 |
|
|
more information about how GDB behaves when you stop and start programs
|
392 |
|
|
with multiple threads.
|
393 |
|
|
|
394 |
|
|
*Note Setting watchpoints: Set Watchpoints, for information about
|
395 |
|
|
watchpoints in programs with multiple threads.
|
396 |
|
|
|
397 |
|
|
|
398 |
|
|
File: gdb.info, Node: Processes, Prev: Threads, Up: Running
|
399 |
|
|
|
400 |
|
|
Debugging programs with multiple processes
|
401 |
|
|
==========================================
|
402 |
|
|
|
403 |
|
|
On most systems, GDB has no special support for debugging programs
|
404 |
|
|
which create additional processes using the `fork' function. When a
|
405 |
|
|
program forks, GDB will continue to debug the parent process and the
|
406 |
|
|
child process will run unimpeded. If you have set a breakpoint in any
|
407 |
|
|
code which the child then executes, the child will get a `SIGTRAP'
|
408 |
|
|
signal which (unless it catches the signal) will cause it to terminate.
|
409 |
|
|
|
410 |
|
|
However, if you want to debug the child process there is a workaround
|
411 |
|
|
which isn't too painful. Put a call to `sleep' in the code which the
|
412 |
|
|
child process executes after the fork. It may be useful to sleep only
|
413 |
|
|
if a certain environment variable is set, or a certain file exists, so
|
414 |
|
|
that the delay need not occur when you don't want to run GDB on the
|
415 |
|
|
child. While the child is sleeping, use the `ps' program to get its
|
416 |
|
|
process ID. Then tell GDB (a new invocation of GDB if you are also
|
417 |
|
|
debugging the parent process) to attach to the child process (*note
|
418 |
|
|
Attach::). From that point on you can debug the child process just
|
419 |
|
|
like any other process which you attached to.
|
420 |
|
|
|
421 |
|
|
On HP-UX (11.x and later only?), GDB provides support for debugging
|
422 |
|
|
programs that create additional processes using the `fork' or `vfork'
|
423 |
|
|
function.
|
424 |
|
|
|
425 |
|
|
By default, when a program forks, GDB will continue to debug the
|
426 |
|
|
parent process and the child process will run unimpeded.
|
427 |
|
|
|
428 |
|
|
If you want to follow the child process instead of the parent
|
429 |
|
|
process, use the command `set follow-fork-mode'.
|
430 |
|
|
|
431 |
|
|
`set follow-fork-mode MODE'
|
432 |
|
|
Set the debugger response to a program call of `fork' or `vfork'.
|
433 |
|
|
A call to `fork' or `vfork' creates a new process. The MODE can
|
434 |
|
|
be:
|
435 |
|
|
|
436 |
|
|
`parent'
|
437 |
|
|
The original process is debugged after a fork. The child
|
438 |
|
|
process runs unimpeded. This is the default.
|
439 |
|
|
|
440 |
|
|
`child'
|
441 |
|
|
The new process is debugged after a fork. The parent process
|
442 |
|
|
runs unimpeded.
|
443 |
|
|
|
444 |
|
|
`ask'
|
445 |
|
|
The debugger will ask for one of the above choices.
|
446 |
|
|
|
447 |
|
|
`show follow-fork-mode'
|
448 |
|
|
Display the current debugger response to a `fork' or `vfork' call.
|
449 |
|
|
|
450 |
|
|
If you ask to debug a child process and a `vfork' is followed by an
|
451 |
|
|
`exec', GDB executes the new target up to the first breakpoint in the
|
452 |
|
|
new target. If you have a breakpoint set on `main' in your original
|
453 |
|
|
program, the breakpoint will also be set on the child process's `main'.
|
454 |
|
|
|
455 |
|
|
When a child process is spawned by `vfork', you cannot debug the
|
456 |
|
|
child or parent until an `exec' call completes.
|
457 |
|
|
|
458 |
|
|
If you issue a `run' command to GDB after an `exec' call executes,
|
459 |
|
|
the new target restarts. To restart the parent process, use the `file'
|
460 |
|
|
command with the parent executable name as its argument.
|
461 |
|
|
|
462 |
|
|
You can use the `catch' command to make GDB stop whenever a `fork',
|
463 |
|
|
`vfork', or `exec' call is made. *Note Setting catchpoints: Set
|
464 |
|
|
Catchpoints.
|
465 |
|
|
|
466 |
|
|
|
467 |
|
|
File: gdb.info, Node: Stopping, Next: Stack, Prev: Running, Up: Top
|
468 |
|
|
|
469 |
|
|
Stopping and Continuing
|
470 |
|
|
***********************
|
471 |
|
|
|
472 |
|
|
The principal purposes of using a debugger are so that you can stop
|
473 |
|
|
your program before it terminates; or so that, if your program runs into
|
474 |
|
|
trouble, you can investigate and find out why.
|
475 |
|
|
|
476 |
|
|
Inside GDB, your program may stop for any of several reasons, such
|
477 |
|
|
as a signal, a breakpoint, or reaching a new line after a GDB command
|
478 |
|
|
such as `step'. You may then examine and change variables, set new
|
479 |
|
|
breakpoints or remove old ones, and then continue execution. Usually,
|
480 |
|
|
the messages shown by GDB provide ample explanation of the status of
|
481 |
|
|
your program--but you can also explicitly request this information at
|
482 |
|
|
any time.
|
483 |
|
|
|
484 |
|
|
`info program'
|
485 |
|
|
Display information about the status of your program: whether it is
|
486 |
|
|
running or not, what process it is, and why it stopped.
|
487 |
|
|
|
488 |
|
|
* Menu:
|
489 |
|
|
|
490 |
|
|
* Breakpoints:: Breakpoints, watchpoints, and catchpoints
|
491 |
|
|
* Continuing and Stepping:: Resuming execution
|
492 |
|
|
* Signals:: Signals
|
493 |
|
|
* Thread Stops:: Stopping and starting multi-thread programs
|
494 |
|
|
|
495 |
|
|
|
496 |
|
|
File: gdb.info, Node: Breakpoints, Next: Continuing and Stepping, Up: Stopping
|
497 |
|
|
|
498 |
|
|
Breakpoints, watchpoints, and catchpoints
|
499 |
|
|
=========================================
|
500 |
|
|
|
501 |
|
|
A "breakpoint" makes your program stop whenever a certain point in
|
502 |
|
|
the program is reached. For each breakpoint, you can add conditions to
|
503 |
|
|
control in finer detail whether your program stops. You can set
|
504 |
|
|
breakpoints with the `break' command and its variants (*note Setting
|
505 |
|
|
breakpoints: Set Breaks.), to specify the place where your program
|
506 |
|
|
should stop by line number, function name or exact address in the
|
507 |
|
|
program.
|
508 |
|
|
|
509 |
|
|
In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can
|
510 |
|
|
set breakpoints in shared libraries before the executable is run.
|
511 |
|
|
There is a minor limitation on HP-UX systems: you must wait until the
|
512 |
|
|
executable is run in order to set breakpoints in shared library
|
513 |
|
|
routines that are not called directly by the program (for example,
|
514 |
|
|
routines that are arguments in a `pthread_create' call).
|
515 |
|
|
|
516 |
|
|
A "watchpoint" is a special breakpoint that stops your program when
|
517 |
|
|
the value of an expression changes. You must use a different command
|
518 |
|
|
to set watchpoints (*note Setting watchpoints: Set Watchpoints.), but
|
519 |
|
|
aside from that, you can manage a watchpoint like any other breakpoint:
|
520 |
|
|
you enable, disable, and delete both breakpoints and watchpoints using
|
521 |
|
|
the same commands.
|
522 |
|
|
|
523 |
|
|
You can arrange to have values from your program displayed
|
524 |
|
|
automatically whenever GDB stops at a breakpoint. *Note Automatic
|
525 |
|
|
display: Auto Display.
|
526 |
|
|
|
527 |
|
|
A "catchpoint" is another special breakpoint that stops your program
|
528 |
|
|
when a certain kind of event occurs, such as the throwing of a C++
|
529 |
|
|
exception or the loading of a library. As with watchpoints, you use a
|
530 |
|
|
different command to set a catchpoint (*note Setting catchpoints: Set
|
531 |
|
|
Catchpoints.), but aside from that, you can manage a catchpoint like any
|
532 |
|
|
other breakpoint. (To stop when your program receives a signal, use the
|
533 |
|
|
`handle' command; see *Note Signals: Signals.)
|
534 |
|
|
|
535 |
|
|
GDB assigns a number to each breakpoint, watchpoint, or catchpoint
|
536 |
|
|
when you create it; these numbers are successive integers starting with
|
537 |
|
|
one. In many of the commands for controlling various features of
|
538 |
|
|
breakpoints you use the breakpoint number to say which breakpoint you
|
539 |
|
|
want to change. Each breakpoint may be "enabled" or "disabled"; if
|
540 |
|
|
disabled, it has no effect on your program until you enable it again.
|
541 |
|
|
|
542 |
|
|
Some GDB commands accept a range of breakpoints on which to operate.
|
543 |
|
|
A breakpoint range is either a single breakpoint number, like `5', or
|
544 |
|
|
two such numbers, in increasing order, separated by a hyphen, like
|
545 |
|
|
`5-7'. When a breakpoint range is given to a command, all breakpoint
|
546 |
|
|
in that range are operated on.
|
547 |
|
|
|
548 |
|
|
* Menu:
|
549 |
|
|
|
550 |
|
|
* Set Breaks:: Setting breakpoints
|
551 |
|
|
* Set Watchpoints:: Setting watchpoints
|
552 |
|
|
* Set Catchpoints:: Setting catchpoints
|
553 |
|
|
* Delete Breaks:: Deleting breakpoints
|
554 |
|
|
* Disabling:: Disabling breakpoints
|
555 |
|
|
* Conditions:: Break conditions
|
556 |
|
|
* Break Commands:: Breakpoint command lists
|
557 |
|
|
* Breakpoint Menus:: Breakpoint menus
|
558 |
|
|
* Error in Breakpoints:: ``Cannot insert breakpoints''
|
559 |
|
|
|
560 |
|
|
|
561 |
|
|
File: gdb.info, Node: Set Breaks, Next: Set Watchpoints, Up: Breakpoints
|
562 |
|
|
|
563 |
|
|
Setting breakpoints
|
564 |
|
|
-------------------
|
565 |
|
|
|
566 |
|
|
Breakpoints are set with the `break' command (abbreviated `b'). The
|
567 |
|
|
debugger convenience variable `$bpnum' records the number of the
|
568 |
|
|
breakpoint you've set most recently; see *Note Convenience variables:
|
569 |
|
|
Convenience Vars, for a discussion of what you can do with convenience
|
570 |
|
|
variables.
|
571 |
|
|
|
572 |
|
|
You have several ways to say where the breakpoint should go.
|
573 |
|
|
|
574 |
|
|
`break FUNCTION'
|
575 |
|
|
Set a breakpoint at entry to function FUNCTION. When using source
|
576 |
|
|
languages that permit overloading of symbols, such as C++,
|
577 |
|
|
FUNCTION may refer to more than one possible place to break.
|
578 |
|
|
*Note Breakpoint menus: Breakpoint Menus, for a discussion of that
|
579 |
|
|
situation.
|
580 |
|
|
|
581 |
|
|
`break +OFFSET'
|
582 |
|
|
`break -OFFSET'
|
583 |
|
|
Set a breakpoint some number of lines forward or back from the
|
584 |
|
|
position at which execution stopped in the currently selected
|
585 |
|
|
"stack frame". (*Note Frames: Frames, for a description of stack
|
586 |
|
|
frames.)
|
587 |
|
|
|
588 |
|
|
`break LINENUM'
|
589 |
|
|
Set a breakpoint at line LINENUM in the current source file. The
|
590 |
|
|
current source file is the last file whose source text was printed.
|
591 |
|
|
The breakpoint will stop your program just before it executes any
|
592 |
|
|
of the code on that line.
|
593 |
|
|
|
594 |
|
|
`break FILENAME:LINENUM'
|
595 |
|
|
Set a breakpoint at line LINENUM in source file FILENAME.
|
596 |
|
|
|
597 |
|
|
`break FILENAME:FUNCTION'
|
598 |
|
|
Set a breakpoint at entry to function FUNCTION found in file
|
599 |
|
|
FILENAME. Specifying a file name as well as a function name is
|
600 |
|
|
superfluous except when multiple files contain similarly named
|
601 |
|
|
functions.
|
602 |
|
|
|
603 |
|
|
`break *ADDRESS'
|
604 |
|
|
Set a breakpoint at address ADDRESS. You can use this to set
|
605 |
|
|
breakpoints in parts of your program which do not have debugging
|
606 |
|
|
information or source files.
|
607 |
|
|
|
608 |
|
|
`break'
|
609 |
|
|
When called without any arguments, `break' sets a breakpoint at
|
610 |
|
|
the next instruction to be executed in the selected stack frame
|
611 |
|
|
(*note Examining the Stack: Stack.). In any selected frame but the
|
612 |
|
|
innermost, this makes your program stop as soon as control returns
|
613 |
|
|
to that frame. This is similar to the effect of a `finish'
|
614 |
|
|
command in the frame inside the selected frame--except that
|
615 |
|
|
`finish' does not leave an active breakpoint. If you use `break'
|
616 |
|
|
without an argument in the innermost frame, GDB stops the next
|
617 |
|
|
time it reaches the current location; this may be useful inside
|
618 |
|
|
loops.
|
619 |
|
|
|
620 |
|
|
GDB normally ignores breakpoints when it resumes execution, until
|
621 |
|
|
at least one instruction has been executed. If it did not do
|
622 |
|
|
this, you would be unable to proceed past a breakpoint without
|
623 |
|
|
first disabling the breakpoint. This rule applies whether or not
|
624 |
|
|
the breakpoint already existed when your program stopped.
|
625 |
|
|
|
626 |
|
|
`break ... if COND'
|
627 |
|
|
Set a breakpoint with condition COND; evaluate the expression COND
|
628 |
|
|
each time the breakpoint is reached, and stop only if the value is
|
629 |
|
|
nonzero--that is, if COND evaluates as true. `...' stands for one
|
630 |
|
|
of the possible arguments described above (or no argument)
|
631 |
|
|
specifying where to break. *Note Break conditions: Conditions,
|
632 |
|
|
for more information on breakpoint conditions.
|
633 |
|
|
|
634 |
|
|
`tbreak ARGS'
|
635 |
|
|
Set a breakpoint enabled only for one stop. ARGS are the same as
|
636 |
|
|
for the `break' command, and the breakpoint is set in the same
|
637 |
|
|
way, but the breakpoint is automatically deleted after the first
|
638 |
|
|
time your program stops there. *Note Disabling breakpoints:
|
639 |
|
|
Disabling.
|
640 |
|
|
|
641 |
|
|
`hbreak ARGS'
|
642 |
|
|
Set a hardware-assisted breakpoint. ARGS are the same as for the
|
643 |
|
|
`break' command and the breakpoint is set in the same way, but the
|
644 |
|
|
breakpoint requires hardware support and some target hardware may
|
645 |
|
|
not have this support. The main purpose of this is EPROM/ROM code
|
646 |
|
|
debugging, so you can set a breakpoint at an instruction without
|
647 |
|
|
changing the instruction. This can be used with the new
|
648 |
|
|
trap-generation provided by SPARClite DSU and some x86-based
|
649 |
|
|
targets. These targets will generate traps when a program
|
650 |
|
|
accesses some data or instruction address that is assigned to the
|
651 |
|
|
debug registers. However the hardware breakpoint registers can
|
652 |
|
|
take a limited number of breakpoints. For example, on the DSU,
|
653 |
|
|
only two data breakpoints can be set at a time, and GDB will
|
654 |
|
|
reject this command if more than two are used. Delete or disable
|
655 |
|
|
unused hardware breakpoints before setting new ones (*note
|
656 |
|
|
Disabling: Disabling.). *Note Break conditions: Conditions.
|
657 |
|
|
|
658 |
|
|
`thbreak ARGS'
|
659 |
|
|
Set a hardware-assisted breakpoint enabled only for one stop. ARGS
|
660 |
|
|
are the same as for the `hbreak' command and the breakpoint is set
|
661 |
|
|
in the same way. However, like the `tbreak' command, the
|
662 |
|
|
breakpoint is automatically deleted after the first time your
|
663 |
|
|
program stops there. Also, like the `hbreak' command, the
|
664 |
|
|
breakpoint requires hardware support and some target hardware may
|
665 |
|
|
not have this support. *Note Disabling breakpoints: Disabling.
|
666 |
|
|
See also *Note Break conditions: Conditions.
|
667 |
|
|
|
668 |
|
|
`rbreak REGEX'
|
669 |
|
|
Set breakpoints on all functions matching the regular expression
|
670 |
|
|
REGEX. This command sets an unconditional breakpoint on all
|
671 |
|
|
matches, printing a list of all breakpoints it set. Once these
|
672 |
|
|
breakpoints are set, they are treated just like the breakpoints
|
673 |
|
|
set with the `break' command. You can delete them, disable them,
|
674 |
|
|
or make them conditional the same way as any other breakpoint.
|
675 |
|
|
|
676 |
|
|
The syntax of the regular expression is the standard one used with
|
677 |
|
|
tools like `grep'. Note that this is different from the syntax
|
678 |
|
|
used by shells, so for instance `foo*' matches all functions that
|
679 |
|
|
include an `fo' followed by zero or more `o's. There is an
|
680 |
|
|
implicit `.*' leading and trailing the regular expression you
|
681 |
|
|
supply, so to match only functions that begin with `foo', use
|
682 |
|
|
`^foo'.
|
683 |
|
|
|
684 |
|
|
When debugging C++ programs, `rbreak' is useful for setting
|
685 |
|
|
breakpoints on overloaded functions that are not members of any
|
686 |
|
|
special classes.
|
687 |
|
|
|
688 |
|
|
`info breakpoints [N]'
|
689 |
|
|
`info break [N]'
|
690 |
|
|
`info watchpoints [N]'
|
691 |
|
|
Print a table of all breakpoints, watchpoints, and catchpoints set
|
692 |
|
|
and not deleted, with the following columns for each breakpoint:
|
693 |
|
|
|
694 |
|
|
_Breakpoint Numbers_
|
695 |
|
|
|
696 |
|
|
_Type_
|
697 |
|
|
Breakpoint, watchpoint, or catchpoint.
|
698 |
|
|
|
699 |
|
|
_Disposition_
|
700 |
|
|
Whether the breakpoint is marked to be disabled or deleted
|
701 |
|
|
when hit.
|
702 |
|
|
|
703 |
|
|
_Enabled or Disabled_
|
704 |
|
|
Enabled breakpoints are marked with `y'. `n' marks
|
705 |
|
|
breakpoints that are not enabled.
|
706 |
|
|
|
707 |
|
|
_Address_
|
708 |
|
|
Where the breakpoint is in your program, as a memory address.
|
709 |
|
|
|
710 |
|
|
_What_
|
711 |
|
|
Where the breakpoint is in the source for your program, as a
|
712 |
|
|
file and line number.
|
713 |
|
|
|
714 |
|
|
If a breakpoint is conditional, `info break' shows the condition on
|
715 |
|
|
the line following the affected breakpoint; breakpoint commands,
|
716 |
|
|
if any, are listed after that.
|
717 |
|
|
|
718 |
|
|
`info break' with a breakpoint number N as argument lists only
|
719 |
|
|
that breakpoint. The convenience variable `$_' and the default
|
720 |
|
|
examining-address for the `x' command are set to the address of
|
721 |
|
|
the last breakpoint listed (*note Examining memory: Memory.).
|
722 |
|
|
|
723 |
|
|
`info break' displays a count of the number of times the breakpoint
|
724 |
|
|
has been hit. This is especially useful in conjunction with the
|
725 |
|
|
`ignore' command. You can ignore a large number of breakpoint
|
726 |
|
|
hits, look at the breakpoint info to see how many times the
|
727 |
|
|
breakpoint was hit, and then run again, ignoring one less than
|
728 |
|
|
that number. This will get you quickly to the last hit of that
|
729 |
|
|
breakpoint.
|
730 |
|
|
|
731 |
|
|
GDB allows you to set any number of breakpoints at the same place in
|
732 |
|
|
your program. There is nothing silly or meaningless about this. When
|
733 |
|
|
the breakpoints are conditional, this is even useful (*note Break
|
734 |
|
|
conditions: Conditions.).
|
735 |
|
|
|
736 |
|
|
GDB itself sometimes sets breakpoints in your program for special
|
737 |
|
|
purposes, such as proper handling of `longjmp' (in C programs). These
|
738 |
|
|
internal breakpoints are assigned negative numbers, starting with `-1';
|
739 |
|
|
`info breakpoints' does not display them.
|
740 |
|
|
|
741 |
|
|
You can see these breakpoints with the GDB maintenance command
|
742 |
|
|
`maint info breakpoints'.
|
743 |
|
|
|
744 |
|
|
`maint info breakpoints'
|
745 |
|
|
Using the same format as `info breakpoints', display both the
|
746 |
|
|
breakpoints you've set explicitly, and those GDB is using for
|
747 |
|
|
internal purposes. Internal breakpoints are shown with negative
|
748 |
|
|
breakpoint numbers. The type column identifies what kind of
|
749 |
|
|
breakpoint is shown:
|
750 |
|
|
|
751 |
|
|
`breakpoint'
|
752 |
|
|
Normal, explicitly set breakpoint.
|
753 |
|
|
|
754 |
|
|
`watchpoint'
|
755 |
|
|
Normal, explicitly set watchpoint.
|
756 |
|
|
|
757 |
|
|
`longjmp'
|
758 |
|
|
Internal breakpoint, used to handle correctly stepping through
|
759 |
|
|
`longjmp' calls.
|
760 |
|
|
|
761 |
|
|
`longjmp resume'
|
762 |
|
|
Internal breakpoint at the target of a `longjmp'.
|
763 |
|
|
|
764 |
|
|
`until'
|
765 |
|
|
Temporary internal breakpoint used by the GDB `until' command.
|
766 |
|
|
|
767 |
|
|
`finish'
|
768 |
|
|
Temporary internal breakpoint used by the GDB `finish'
|
769 |
|
|
command.
|
770 |
|
|
|
771 |
|
|
`shlib events'
|
772 |
|
|
Shared library events.
|
773 |
|
|
|
774 |
|
|
|
775 |
|
|
File: gdb.info, Node: Set Watchpoints, Next: Set Catchpoints, Prev: Set Breaks, Up: Breakpoints
|
776 |
|
|
|
777 |
|
|
Setting watchpoints
|
778 |
|
|
-------------------
|
779 |
|
|
|
780 |
|
|
You can use a watchpoint to stop execution whenever the value of an
|
781 |
|
|
expression changes, without having to predict a particular place where
|
782 |
|
|
this may happen.
|
783 |
|
|
|
784 |
|
|
Depending on your system, watchpoints may be implemented in software
|
785 |
|
|
or hardware. GDB does software watchpointing by single-stepping your
|
786 |
|
|
program and testing the variable's value each time, which is hundreds of
|
787 |
|
|
times slower than normal execution. (But this may still be worth it, to
|
788 |
|
|
catch errors where you have no clue what part of your program is the
|
789 |
|
|
culprit.)
|
790 |
|
|
|
791 |
|
|
On some systems, such as HP-UX, Linux and some other x86-based
|
792 |
|
|
targets, GDB includes support for hardware watchpoints, which do not
|
793 |
|
|
slow down the running of your program.
|
794 |
|
|
|
795 |
|
|
`watch EXPR'
|
796 |
|
|
Set a watchpoint for an expression. GDB will break when EXPR is
|
797 |
|
|
written into by the program and its value changes.
|
798 |
|
|
|
799 |
|
|
`rwatch EXPR'
|
800 |
|
|
Set a watchpoint that will break when watch EXPR is read by the
|
801 |
|
|
program.
|
802 |
|
|
|
803 |
|
|
`awatch EXPR'
|
804 |
|
|
Set a watchpoint that will break when EXPR is either read or
|
805 |
|
|
written into by the program.
|
806 |
|
|
|
807 |
|
|
`info watchpoints'
|
808 |
|
|
This command prints a list of watchpoints, breakpoints, and
|
809 |
|
|
catchpoints; it is the same as `info break'.
|
810 |
|
|
|
811 |
|
|
GDB sets a "hardware watchpoint" if possible. Hardware watchpoints
|
812 |
|
|
execute very quickly, and the debugger reports a change in value at the
|
813 |
|
|
exact instruction where the change occurs. If GDB cannot set a
|
814 |
|
|
hardware watchpoint, it sets a software watchpoint, which executes more
|
815 |
|
|
slowly and reports the change in value at the next statement, not the
|
816 |
|
|
instruction, after the change occurs.
|
817 |
|
|
|
818 |
|
|
When you issue the `watch' command, GDB reports
|
819 |
|
|
|
820 |
|
|
Hardware watchpoint NUM: EXPR
|
821 |
|
|
|
822 |
|
|
if it was able to set a hardware watchpoint.
|
823 |
|
|
|
824 |
|
|
Currently, the `awatch' and `rwatch' commands can only set hardware
|
825 |
|
|
watchpoints, because accesses to data that don't change the value of
|
826 |
|
|
the watched expression cannot be detected without examining every
|
827 |
|
|
instruction as it is being executed, and GDB does not do that
|
828 |
|
|
currently. If GDB finds that it is unable to set a hardware breakpoint
|
829 |
|
|
with the `awatch' or `rwatch' command, it will print a message like
|
830 |
|
|
this:
|
831 |
|
|
|
832 |
|
|
Expression cannot be implemented with read/access watchpoint.
|
833 |
|
|
|
834 |
|
|
Sometimes, GDB cannot set a hardware watchpoint because the data
|
835 |
|
|
type of the watched expression is wider than what a hardware watchpoint
|
836 |
|
|
on the target machine can handle. For example, some systems can only
|
837 |
|
|
watch regions that are up to 4 bytes wide; on such systems you cannot
|
838 |
|
|
set hardware watchpoints for an expression that yields a
|
839 |
|
|
double-precision floating-point number (which is typically 8 bytes
|
840 |
|
|
wide). As a work-around, it might be possible to break the large region
|
841 |
|
|
into a series of smaller ones and watch them with separate watchpoints.
|
842 |
|
|
|
843 |
|
|
If you set too many hardware watchpoints, GDB might be unable to
|
844 |
|
|
insert all of them when you resume the execution of your program.
|
845 |
|
|
Since the precise number of active watchpoints is unknown until such
|
846 |
|
|
time as the program is about to be resumed, GDB might not be able to
|
847 |
|
|
warn you about this when you set the watchpoints, and the warning will
|
848 |
|
|
be printed only when the program is resumed:
|
849 |
|
|
|
850 |
|
|
Hardware watchpoint NUM: Could not insert watchpoint
|
851 |
|
|
|
852 |
|
|
If this happens, delete or disable some of the watchpoints.
|
853 |
|
|
|
854 |
|
|
The SPARClite DSU will generate traps when a program accesses some
|
855 |
|
|
data or instruction address that is assigned to the debug registers.
|
856 |
|
|
For the data addresses, DSU facilitates the `watch' command. However
|
857 |
|
|
the hardware breakpoint registers can only take two data watchpoints,
|
858 |
|
|
and both watchpoints must be the same kind. For example, you can set
|
859 |
|
|
two watchpoints with `watch' commands, two with `rwatch' commands, *or*
|
860 |
|
|
two with `awatch' commands, but you cannot set one watchpoint with one
|
861 |
|
|
command and the other with a different command. GDB will reject the
|
862 |
|
|
command if you try to mix watchpoints. Delete or disable unused
|
863 |
|
|
watchpoint commands before setting new ones.
|
864 |
|
|
|
865 |
|
|
If you call a function interactively using `print' or `call', any
|
866 |
|
|
watchpoints you have set will be inactive until GDB reaches another
|
867 |
|
|
kind of breakpoint or the call completes.
|
868 |
|
|
|
869 |
|
|
GDB automatically deletes watchpoints that watch local (automatic)
|
870 |
|
|
variables, or expressions that involve such variables, when they go out
|
871 |
|
|
of scope, that is, when the execution leaves the block in which these
|
872 |
|
|
variables were defined. In particular, when the program being debugged
|
873 |
|
|
terminates, _all_ local variables go out of scope, and so only
|
874 |
|
|
watchpoints that watch global variables remain set. If you rerun the
|
875 |
|
|
program, you will need to set all such watchpoints again. One way of
|
876 |
|
|
doing that would be to set a code breakpoint at the entry to the `main'
|
877 |
|
|
function and when it breaks, set all the watchpoints.
|
878 |
|
|
|
879 |
|
|
_Warning:_ In multi-thread programs, watchpoints have only limited
|
880 |
|
|
usefulness. With the current watchpoint implementation, GDB can
|
881 |
|
|
only watch the value of an expression _in a single thread_. If
|
882 |
|
|
you are confident that the expression can only change due to the
|
883 |
|
|
current thread's activity (and if you are also confident that no
|
884 |
|
|
other thread can become current), then you can use watchpoints as
|
885 |
|
|
usual. However, GDB may not notice when a non-current thread's
|
886 |
|
|
activity changes the expression.
|
887 |
|
|
|
888 |
|
|
_HP-UX Warning:_ In multi-thread programs, software watchpoints
|
889 |
|
|
have only limited usefulness. If GDB creates a software
|
890 |
|
|
watchpoint, it can only watch the value of an expression _in a
|
891 |
|
|
single thread_. If you are confident that the expression can only
|
892 |
|
|
change due to the current thread's activity (and if you are also
|
893 |
|
|
confident that no other thread can become current), then you can
|
894 |
|
|
use software watchpoints as usual. However, GDB may not notice
|
895 |
|
|
when a non-current thread's activity changes the expression.
|
896 |
|
|
(Hardware watchpoints, in contrast, watch an expression in all
|
897 |
|
|
threads.)
|
898 |
|
|
|
899 |
|
|
|
900 |
|
|
File: gdb.info, Node: Set Catchpoints, Next: Delete Breaks, Prev: Set Watchpoints, Up: Breakpoints
|
901 |
|
|
|
902 |
|
|
Setting catchpoints
|
903 |
|
|
-------------------
|
904 |
|
|
|
905 |
|
|
You can use "catchpoints" to cause the debugger to stop for certain
|
906 |
|
|
kinds of program events, such as C++ exceptions or the loading of a
|
907 |
|
|
shared library. Use the `catch' command to set a catchpoint.
|
908 |
|
|
|
909 |
|
|
`catch EVENT'
|
910 |
|
|
Stop when EVENT occurs. EVENT can be any of the following:
|
911 |
|
|
`throw'
|
912 |
|
|
The throwing of a C++ exception.
|
913 |
|
|
|
914 |
|
|
`catch'
|
915 |
|
|
The catching of a C++ exception.
|
916 |
|
|
|
917 |
|
|
`exec'
|
918 |
|
|
A call to `exec'. This is currently only available for HP-UX.
|
919 |
|
|
|
920 |
|
|
`fork'
|
921 |
|
|
A call to `fork'. This is currently only available for HP-UX.
|
922 |
|
|
|
923 |
|
|
`vfork'
|
924 |
|
|
A call to `vfork'. This is currently only available for
|
925 |
|
|
HP-UX.
|
926 |
|
|
|
927 |
|
|
`load'
|
928 |
|
|
`load LIBNAME'
|
929 |
|
|
The dynamic loading of any shared library, or the loading of
|
930 |
|
|
the library LIBNAME. This is currently only available for
|
931 |
|
|
HP-UX.
|
932 |
|
|
|
933 |
|
|
`unload'
|
934 |
|
|
`unload LIBNAME'
|
935 |
|
|
The unloading of any dynamically loaded shared library, or
|
936 |
|
|
the unloading of the library LIBNAME. This is currently only
|
937 |
|
|
available for HP-UX.
|
938 |
|
|
|
939 |
|
|
`tcatch EVENT'
|
940 |
|
|
Set a catchpoint that is enabled only for one stop. The
|
941 |
|
|
catchpoint is automatically deleted after the first time the event
|
942 |
|
|
is caught.
|
943 |
|
|
|
944 |
|
|
Use the `info break' command to list the current catchpoints.
|
945 |
|
|
|
946 |
|
|
There are currently some limitations to C++ exception handling
|
947 |
|
|
(`catch throw' and `catch catch') in GDB:
|
948 |
|
|
|
949 |
|
|
* If you call a function interactively, GDB normally returns control
|
950 |
|
|
to you when the function has finished executing. If the call
|
951 |
|
|
raises an exception, however, the call may bypass the mechanism
|
952 |
|
|
that returns control to you and cause your program either to abort
|
953 |
|
|
or to simply continue running until it hits a breakpoint, catches
|
954 |
|
|
a signal that GDB is listening for, or exits. This is the case
|
955 |
|
|
even if you set a catchpoint for the exception; catchpoints on
|
956 |
|
|
exceptions are disabled within interactive calls.
|
957 |
|
|
|
958 |
|
|
* You cannot raise an exception interactively.
|
959 |
|
|
|
960 |
|
|
* You cannot install an exception handler interactively.
|
961 |
|
|
|
962 |
|
|
Sometimes `catch' is not the best way to debug exception handling:
|
963 |
|
|
if you need to know exactly where an exception is raised, it is better
|
964 |
|
|
to stop _before_ the exception handler is called, since that way you
|
965 |
|
|
can see the stack before any unwinding takes place. If you set a
|
966 |
|
|
breakpoint in an exception handler instead, it may not be easy to find
|
967 |
|
|
out where the exception was raised.
|
968 |
|
|
|
969 |
|
|
To stop just before an exception handler is called, you need some
|
970 |
|
|
knowledge of the implementation. In the case of GNU C++, exceptions are
|
971 |
|
|
raised by calling a library function named `__raise_exception' which
|
972 |
|
|
has the following ANSI C interface:
|
973 |
|
|
|
974 |
|
|
/* ADDR is where the exception identifier is stored.
|
975 |
|
|
ID is the exception identifier. */
|
976 |
|
|
void __raise_exception (void **addr, void *id);
|
977 |
|
|
|
978 |
|
|
To make the debugger catch all exceptions before any stack unwinding
|
979 |
|
|
takes place, set a breakpoint on `__raise_exception' (*note
|
980 |
|
|
Breakpoints; watchpoints; and exceptions: Breakpoints.).
|
981 |
|
|
|
982 |
|
|
With a conditional breakpoint (*note Break conditions: Conditions.)
|
983 |
|
|
that depends on the value of ID, you can stop your program when a
|
984 |
|
|
specific exception is raised. You can use multiple conditional
|
985 |
|
|
breakpoints to stop your program when any of a number of exceptions are
|
986 |
|
|
raised.
|
987 |
|
|
|
988 |
|
|
|
989 |
|
|
File: gdb.info, Node: Delete Breaks, Next: Disabling, Prev: Set Catchpoints, Up: Breakpoints
|
990 |
|
|
|
991 |
|
|
Deleting breakpoints
|
992 |
|
|
--------------------
|
993 |
|
|
|
994 |
|
|
It is often necessary to eliminate a breakpoint, watchpoint, or
|
995 |
|
|
catchpoint once it has done its job and you no longer want your program
|
996 |
|
|
to stop there. This is called "deleting" the breakpoint. A breakpoint
|
997 |
|
|
that has been deleted no longer exists; it is forgotten.
|
998 |
|
|
|
999 |
|
|
With the `clear' command you can delete breakpoints according to
|
1000 |
|
|
where they are in your program. With the `delete' command you can
|
1001 |
|
|
delete individual breakpoints, watchpoints, or catchpoints by specifying
|
1002 |
|
|
their breakpoint numbers.
|
1003 |
|
|
|
1004 |
|
|
It is not necessary to delete a breakpoint to proceed past it. GDB
|
1005 |
|
|
automatically ignores breakpoints on the first instruction to be
|
1006 |
|
|
executed when you continue execution without changing the execution
|
1007 |
|
|
address.
|
1008 |
|
|
|
1009 |
|
|
`clear'
|
1010 |
|
|
Delete any breakpoints at the next instruction to be executed in
|
1011 |
|
|
the selected stack frame (*note Selecting a frame: Selection.).
|
1012 |
|
|
When the innermost frame is selected, this is a good way to delete
|
1013 |
|
|
a breakpoint where your program just stopped.
|
1014 |
|
|
|
1015 |
|
|
`clear FUNCTION'
|
1016 |
|
|
`clear FILENAME:FUNCTION'
|
1017 |
|
|
Delete any breakpoints set at entry to the function FUNCTION.
|
1018 |
|
|
|
1019 |
|
|
`clear LINENUM'
|
1020 |
|
|
`clear FILENAME:LINENUM'
|
1021 |
|
|
Delete any breakpoints set at or within the code of the specified
|
1022 |
|
|
line.
|
1023 |
|
|
|
1024 |
|
|
`delete [breakpoints] [RANGE...]'
|
1025 |
|
|
Delete the breakpoints, watchpoints, or catchpoints of the
|
1026 |
|
|
breakpoint ranges specified as arguments. If no argument is
|
1027 |
|
|
specified, delete all breakpoints (GDB asks confirmation, unless
|
1028 |
|
|
you have `set confirm off'). You can abbreviate this command as
|
1029 |
|
|
`d'.
|
1030 |
|
|
|
1031 |
|
|
|
1032 |
|
|
File: gdb.info, Node: Disabling, Next: Conditions, Prev: Delete Breaks, Up: Breakpoints
|
1033 |
|
|
|
1034 |
|
|
Disabling breakpoints
|
1035 |
|
|
---------------------
|
1036 |
|
|
|
1037 |
|
|
Rather than deleting a breakpoint, watchpoint, or catchpoint, you
|
1038 |
|
|
might prefer to "disable" it. This makes the breakpoint inoperative as
|
1039 |
|
|
if it had been deleted, but remembers the information on the breakpoint
|
1040 |
|
|
so that you can "enable" it again later.
|
1041 |
|
|
|
1042 |
|
|
You disable and enable breakpoints, watchpoints, and catchpoints with
|
1043 |
|
|
the `enable' and `disable' commands, optionally specifying one or more
|
1044 |
|
|
breakpoint numbers as arguments. Use `info break' or `info watch' to
|
1045 |
|
|
print a list of breakpoints, watchpoints, and catchpoints if you do not
|
1046 |
|
|
know which numbers to use.
|
1047 |
|
|
|
1048 |
|
|
A breakpoint, watchpoint, or catchpoint can have any of four
|
1049 |
|
|
different states of enablement:
|
1050 |
|
|
|
1051 |
|
|
* Enabled. The breakpoint stops your program. A breakpoint set
|
1052 |
|
|
with the `break' command starts out in this state.
|
1053 |
|
|
|
1054 |
|
|
* Disabled. The breakpoint has no effect on your program.
|
1055 |
|
|
|
1056 |
|
|
* Enabled once. The breakpoint stops your program, but then becomes
|
1057 |
|
|
disabled.
|
1058 |
|
|
|
1059 |
|
|
* Enabled for deletion. The breakpoint stops your program, but
|
1060 |
|
|
immediately after it does so it is deleted permanently. A
|
1061 |
|
|
breakpoint set with the `tbreak' command starts out in this state.
|
1062 |
|
|
|
1063 |
|
|
You can use the following commands to enable or disable breakpoints,
|
1064 |
|
|
watchpoints, and catchpoints:
|
1065 |
|
|
|
1066 |
|
|
`disable [breakpoints] [RANGE...]'
|
1067 |
|
|
Disable the specified breakpoints--or all breakpoints, if none are
|
1068 |
|
|
listed. A disabled breakpoint has no effect but is not forgotten.
|
1069 |
|
|
All options such as ignore-counts, conditions and commands are
|
1070 |
|
|
remembered in case the breakpoint is enabled again later. You may
|
1071 |
|
|
abbreviate `disable' as `dis'.
|
1072 |
|
|
|
1073 |
|
|
`enable [breakpoints] [RANGE...]'
|
1074 |
|
|
Enable the specified breakpoints (or all defined breakpoints).
|
1075 |
|
|
They become effective once again in stopping your program.
|
1076 |
|
|
|
1077 |
|
|
`enable [breakpoints] once RANGE...'
|
1078 |
|
|
Enable the specified breakpoints temporarily. GDB disables any of
|
1079 |
|
|
these breakpoints immediately after stopping your program.
|
1080 |
|
|
|
1081 |
|
|
`enable [breakpoints] delete RANGE...'
|
1082 |
|
|
Enable the specified breakpoints to work once, then die. GDB
|
1083 |
|
|
deletes any of these breakpoints as soon as your program stops
|
1084 |
|
|
there.
|
1085 |
|
|
|
1086 |
|
|
Except for a breakpoint set with `tbreak' (*note Setting
|
1087 |
|
|
breakpoints: Set Breaks.), breakpoints that you set are initially
|
1088 |
|
|
enabled; subsequently, they become disabled or enabled only when you
|
1089 |
|
|
use one of the commands above. (The command `until' can set and delete
|
1090 |
|
|
a breakpoint of its own, but it does not change the state of your other
|
1091 |
|
|
breakpoints; see *Note Continuing and stepping: Continuing and
|
1092 |
|
|
Stepping.)
|
1093 |
|
|
|