Debugging with GDB Manual HP WDB v6.3 (5900-2180, August 2012)
5.1.8 “Cannot insert breakpoints”
Under some operating systems, breakpoints cannot be used in a program if any other process is
running that program. In this situation, attempting to run or continue a program with a breakpoint
causes GDB to print an error message:
Cannot insert breakpoints.
The same program may be running in another process.
When this happens, you have three ways to proceed:
1. Remove or disable the breakpoints, then continue.
2. Suspend GDB, and copy the file containing your program to a new name. Resume GDB and
use the exec-file command to specify that GDB should run your program under that name.
Then start your program again.
3. Relink your program so that the text segment is nonsharable, using the linker option '-N'. The
operating system limitation may not apply to nonsharable executables.
A similar message can be printed if you request too many active hardware-assisted breakpoints
and watchpoints:
Stopped; cannot insert breakpoints.
You may have requested too many hardware breakpoints and watchpoints.
This message is printed when you attempt to resume the program, since only then GDB knows
exactly how many hardware breakpoints and watchpoints it needs to insert.
When this message is printed, you need to disable or remove some of the hardware-assisted
breakpoints and watchpoints, and then continue.
5.2 Continuing and stepping
Continuing means resuming program execution until your program completes normally. In contrast,
stepping means executing just one more “step” of your program, where “step” may mean either
one line of source code, or one machine instruction (depending on what particular command you
use). Either when continuing or when stepping, your program may stop even sooner, due to a
breakpoint or a signal. (If it stops due to a signal, you may want to use handle, or use 'signal
0' to resume execution. See “Signals” (page 50).)
continue [ignore-count], c
[ignore-count], fg
[ignore-count]
Resume program execution, at the address where your
program last stopped; any breakpoints set at that address
are bypassed. The optional argument ignore-count allows
you to specify a further number of times to ignore a breakpoint
at this location; its effect is like that of ignore (see “Break
conditions” (page 45)).
The argument ignore-count is meaningful only when your
program stopped due to a breakpoint. At other times, the
argument to continue is ignored.
The synonyms c and fg (for foreground, as the debugged
program is deemed to be the foreground program) are
provided purely for convenience, and have exactly the same
behavior as continue.
To resume execution at a different place, you can use return (see “Returning from a function”
(page 93)) to go back to the calling function; or jump (see “Continuing at a different address”
(page 92)) to go to an arbitrary location in your program.
A typical technique for using stepping is to set a breakpoint (see “Breakpoints” (page 39)) at the
beginning of the function or the section of your program where a problem is believed to lie, run
your program until it stops at that breakpoint, and then step through the suspect area, examining
the variables that are interesting, until you see the problem happen.
48 Stopping and Continuing