40
Chapter 7. Stopping and Continuing
gdb automatically deletes watchpoints that watch local (automatic) variables, or expressions that in-
volve such variables, when they go out of scope, that is, when the execution leaves the block in which
these variables were defined. In particular, when the program being debugged terminates,
all
local
variables go out of scope, and so only watchpoints that watch global variables remain set. If you rerun
the program, you will need to set all such watchpoints again. One way of doing that would be to set a
code breakpoint at the entry to the
main
function and when it breaks, set all the watchpoints.
Warning:
In multi-thread programs, watchpoints have only limited usefulness. With the current watchpoint
implementation, gdb can only watch the value of an expression
in a single thread
. If you are confident that
the expression can only change due to the current thread’s activity (and if you are also confident that no
other thread can become current), then you can use watchpoints as usual. However, gdb may not notice
when a non-current thread’s activity changes the expression.
HP-UX Warning:
In multi-thread programs, software watchpoints have only limited usefulness. If gdb cre-
ates a software watchpoint, it can only watch the value of an expression
in a single thread
. If you are
confident that the expression can only change due to the current thread’s activity (and if you are also con-
fident that no other thread can become current), then you can use software watchpoints as usual. However,
gdb may not notice when a non-current thread’s activity changes the expression. (Hardware watchpoints, in
contrast, watch an expression in all threads.)
7.1.3. Setting catchpoints
You can use
catchpoints
to cause the debugger to stop for certain kinds of program events, such as
C
++
exceptions or the loading of a shared library. Use the
catch
command to set a catchpoint.
catch
event
Stop when
event
occurs.
event
can be any of the following:
throw
The throwing of a C
++
exception.
catch
The catching of a C
++
exception.
exec
A call to
exec
. This is currently only available for HP-UX.
fork
A call to
fork
. This is currently only available for HP-UX.
vfork
A call to
vfork
. This is currently only available for HP-UX.
load
load
libname
The dynamic loading of any shared library, or the loading of the library
libname
. This is
currently only available for HP-UX.
Содержание 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: ......