Chapter 7. Stopping and Continuing
45
You can use breakpoint commands to start your program up again. Simply use the
continue
com-
mand, or
step
, or any other command that resumes execution.
Any other commands in the command list, after a command that resumes execution, are ignored. This
is because any time you resume execution (even with a simple
next
or
step
), you may encounter
another breakpoint--which could have its own command list, leading to ambiguities about which list
to execute.
If the first command you specify in a command list is
silent
, the usual message about stopping at a
breakpoint is not printed. This may be desirable for breakpoints that are to print a specific message and
then continue. If none of the remaining commands print anything, you see no sign that the breakpoint
was reached.
silent
is meaningful only at the beginning of a breakpoint command list.
The commands
echo
,
output
, and
printf
allow you to print precisely controlled output, and are
often useful in silent breakpoints. Refer to Section 22.4
Commands for controlled output
.
For example, here is how you could use breakpoint commands to print the value of
x
at entry to
foo
whenever
x
is positive.
break foo if x
0
commands
silent
printf "x is %d\n",x
cont
end
One application for breakpoint commands is to compensate for one bug so you can test for another.
Put a breakpoint just after the erroneous line of code, give it a condition to detect the case in which
something erroneous has been done, and give it commands to assign correct values to any variables
that need them. End with the
continue
command so that your program does not stop, and start with
the
silent
command so that no output is produced. Here is an example:
break 403
commands
silent
set x = y + 4
cont
end
7.1.8. Breakpoint menus
Some programming languages (notably C
++
and Objective-C) permit a single function name to be
defined several times, for application in different contexts. This is called
overloading
. When a function
name is overloaded,
break
function
is not enough to tell gdb where you want a breakpoint. If you
realize this is a problem, you can use something like
break
function
(
types
)
to specify which
particular version of the function you want. Otherwise, gdb offers you a menu of numbered choices
for different possible breakpoints, and waits for your selection with the prompt
. The first two options
are always
[0] cancel
and
[1] all
. Typing
1
sets a breakpoint at each definition of
function
,
and typing
0
aborts the
break
command without setting any new breakpoints.
For example, the following session excerpt shows an attempt to set a breakpoint at the overloaded
symbol
String::after
. We choose three particular definitions of that function name:
(gdb) b String::after
[0] cancel
Содержание ENTERPRISE LINUX 4 - DEVELOPER TOOLS GUIDE
Страница 1: ...Red Hat Enterprise Linux 4 Debugging with gdb ...
Страница 12: ...2 Chapter 1 Debugging with gdb ...
Страница 28: ...18 Chapter 4 Getting In and Out of gdb ...
Страница 34: ...24 Chapter 5 gdb Commands ...
Страница 44: ...34 Chapter 6 Running Programs Under gdb ...
Страница 68: ...58 Chapter 8 Examining the Stack ...
Страница 98: ...88 Chapter 10 Examining Data ...
Страница 112: ...102 Chapter 12 Tracepoints ...
Страница 118: ...108 Chapter 13 Debugging Programs That Use Overlays ...
Страница 138: ...128 Chapter 14 Using gdb with Different Languages ...
Страница 144: ...134 Chapter 15 Examining the Symbol Table ...
Страница 170: ...160 Chapter 19 Debugging remote programs ...
Страница 198: ...188 Chapter 21 Controlling gdb ...
Страница 204: ...194 Chapter 22 Canned Sequences of Commands ...
Страница 206: ...196 Chapter 23 Command Interpreters ...
Страница 216: ...206 Chapter 25 Using gdb under gnu Emacs ...
Страница 296: ...286 Chapter 27 gdb Annotations ...
Страница 300: ...290 Chapter 28 Reporting Bugs in gdb ...
Страница 322: ...312 Chapter 30 Using History Interactively ...
Страница 362: ...352 Appendix D gdb Remote Serial Protocol ...
Страница 380: ...370 Appendix F GNU GENERAL PUBLIC LICENSE ...
Страница 386: ...376 Appendix G GNU Free Documentation License ...
Страница 410: ......