Debugging with GDB Manual HP WDB v6.3 (5900-2180, August 2012)

enable [breakpoints] delete
range...
Enable the specified breakpoints to work once, then die.
GDB deletes any of these breakpoints as soon as your
program stops there.
Except for a breakpoint set with tbreak (see “Setting breakpoints” (page 39)), breakpoints that
you set are initially enabled; subsequently, they become disabled or enabled only when you use
one of the commands above. (The command until can set and delete a breakpoint of its own,
but it does not change the state of your other breakpoints; see “Continuing and stepping (page 48).)
5.1.5 Break conditions
The simplest sort of breakpoint breaks every time your program reaches a specified place. You
can also specify a condition for a breakpoint. A condition is just a Boolean expression in your
programming language (see “Expressions” (page 63)). A breakpoint with a condition evaluates
the expression each time your program reaches it, and your program stops only if the condition
is true.
This is the converse of using assertions for program validation; in that situation, you want to stop
when the assertion is violated―that is, when the condition is false. In C, if you want to test an
assertion expressed by the condition assert, you should set the condition '! assert' on the appropriate
breakpoint.
Conditions are also accepted for watchpoints; you may not need them, since a watchpoint is
inspecting the value of an expression anyhow―but it might be simpler, say, to just set a watchpoint
on a variable name, and specify a condition that tests whether the new value is an interesting one.
Break conditions can have side effects, and may even call functions in your program. This can be
useful, for example, to activate functions that log program progress, or to use your own print
functions to format special data structures. The effects are completely predictable unless there is
another enabled breakpoint at the same address. (In that case, GDB might see the other breakpoint
first and stop your program without checking the condition of this one.) Note that breakpoint
commands are usually more convenient and flexible than break conditions for the purpose of
performing side effects when a breakpoint is reached (see “Breakpoint command lists (page 46)).
Break conditions can be specified when a breakpoint is set, by using 'if' in the arguments to the
break command. See “Setting breakpoints” (page 39). They can also be changed at any time
with the condition command.
You can also use the if keyword with the watch command. The catch command does not
recognize the if keyword; condition is the only way to impose a further condition on a catchpoint.
condition bnum expression Specify expression as the break condition for breakpoint,
watchpoint, or catchpoint number bnum. After you set a
condition, breakpoint bnum stops your program only if the
value of expression is true (nonzero, in C). When you
use condition, GDB checks expression immediately
for syntactic correctness, and to determine whether symbols
in it have referents in the context of your breakpoint. If
expression uses symbols not referenced in the context of
the breakpoint, GDB prints an error message:
No symbol "foo" in current context.
GDB does not actually evaluate expression at the time the
condition command (or a command that sets a breakpoint
with a condition, like break if ...) is given, however. See
“Expressions” (page 63).
condition bnum Remove the condition from breakpoint number bnum. It
becomes an ordinary unconditional breakpoint.
5.1 Breakpoints 45