Debugging with GDB (February 2008)

Table Of Contents
Chapter 5: Stopping and Continuing 43
[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
[1] all
[2] file:String.cc; line number:867
[3] file:String.cc; line number:860
[4] file:String.cc; line number:875
[5] file:String.cc; line number:853
[6] file:String.cc; line number:846
[7] file:String.cc; line number:735
> 2 4 6
Breakpoint 1 at 0xb26c: file String.cc, line 867.
Breakpoint 2 at 0xb344: file String.cc, line 875.
Breakpoint 3 at 0xafcc: file String.cc, line 846.
Multiple breakpoints were set.
Use the "delete" command to delete unwanted
breakpoints.
((gdb))
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.