From 7be570e7ce77920e2e628a03bdfe2d295fc2568f Mon Sep 17 00:00:00 2001 From: Jason Molenda Date: Mon, 16 Aug 1999 19:57:19 +0000 Subject: import gdb-1999-08-16 snapshot --- gdb/doc/ChangeLog | 22 ++++++++++++++++ gdb/doc/Makefile.in | 18 ++++++------- gdb/doc/gdb.texinfo | 70 ++++++++++++++++++++++++++++++++++++++++---------- gdb/doc/gdbint.texinfo | 8 +++--- gdb/doc/remote.texi | 22 +++++++++++----- 5 files changed, 106 insertions(+), 34 deletions(-) (limited to 'gdb/doc') diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 2d0b2ee..46bb910 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,25 @@ +1999-08-12 Ben Elliston + + * gdbint.texinfo (Breakpoint Handling): Add missing words. + +1999-08-10 Eli Zaretskii + + * gdb.texinfo (Set Watchpoints): Explain some subtleties about + watch, awatch, and rwatch. Explain why the latter two cannot be + set as software watchpoints. Document that watchpoints for local + variables are deleted when the debuggee terminates. + +Wed Aug 11 13:18:14 1999 Andrew Cagney + + * remote.texi (Protocol): Further clarification of the "qRcmd" + packet. Allow E.. response packet. "qRcmd" packet is no longer + reserved. + +1999-08-10 Elena Zannoni + + * Makefile.in: Rename inc-hist.texi to inc-hist.texinfo. + * gdb.texinfo: Ditto. + 1999-08-06 Tom Tromey * gdb.texinfo (KOD): New node. diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in index f81e583..ad93b5e 100644 --- a/gdb/doc/Makefile.in +++ b/gdb/doc/Makefile.in @@ -88,7 +88,7 @@ SFILES_INCLUDED = gdb-cfg.texi $(srcdir)/remote.texi SFILES_LOCAL = $(srcdir)/gdb.texinfo GDBvn.texi $(SFILES_INCLUDED) SFILES_DOC = $(SFILES_LOCAL) \ - $(READLINE_DIR)/rluser.texinfo $(READLINE_DIR)/inc-hist.texi + $(READLINE_DIR)/rluser.texinfo $(READLINE_DIR)/inc-hist.texinfo #### Host, target, and site specific Makefile fragments come in here. ### @@ -152,7 +152,7 @@ mostlyclean: rm -f sedref.dvi sedref.tex tmp.sed clean: mostlyclean - rm -f rluser.texinfo inc-hist.texi gdb-cfg.texi + rm -f rluser.texinfo inc-hist.texinfo gdb-cfg.texi distclean: clean rm -f Makefile config.status @@ -260,13 +260,13 @@ rluser.texinfo: ${READLINE_DIR}/rluser.texinfo -e 's/^@end ftable/@end table/g' \ ${READLINE_DIR}/rluser.texinfo > ./rluser.texinfo -inc-hist.texi: ${READLINE_DIR}/inc-hist.texi - ln -s ${READLINE_DIR}/inc-hist.texi . || \ - ln ${READLINE_DIR}/inc-hist.texi . || \ - cp ${READLINE_DIR}/inc-hist.texi . +inc-hist.texinfo: ${READLINE_DIR}/inc-hist.texinfo + ln -s ${READLINE_DIR}/inc-hist.texinfo . || \ + ln ${READLINE_DIR}/inc-hist.texinfo . || \ + cp ${READLINE_DIR}/inc-hist.texinfo . # gdb manual suitable for [gtn]roff -me -gdb.me: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texi +gdb.me: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo sed -e '/\\input texinfo/d' \ -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ -e '/^@ifinfo/,/^@end ifinfo/d' \ @@ -281,7 +281,7 @@ gdb.me: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texi >gdb.me # gdb manual suitable for [gtn]roff -ms -gdb.ms: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texi +gdb.ms: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo sed -e '/\\input texinfo/d' \ -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ -e '/^@ifinfo/,/^@end ifinfo/d' \ @@ -298,7 +298,7 @@ gdb.ms: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texi # gdb manual suitable for [tn]roff -mm # '@noindent's removed due to texi2roff-2 mm bug; if yours is newer, # try leaving them in -gdb.mm: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texi +gdb.mm: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo sed -e '/\\input texinfo/d' \ -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ -e '/^@ifinfo/,/^@end ifinfo/d' \ diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 92e4a21..d150881 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -2667,14 +2667,11 @@ is written into by the program and its value changes. @kindex rwatch @item rwatch @var{expr} Set a watchpoint that will break when watch @var{expr} is read by the program. -If you use both watchpoints, both must be set with the @code{rwatch} -command. @kindex awatch @item awatch @var{expr} Set a watchpoint that will break when @var{args} is read and written into -by the program. If you use both watchpoints, both must be set with the -@code{awatch} command. +by the program. @kindex info watchpoints @item info watchpoints @@ -2698,14 +2695,49 @@ Hardware watchpoint @var{num}: @var{expr} @noindent if it was able to set a hardware watchpoint. -The SPARClite DSU will generate traps when a program accesses -some data or instruction address that is assigned to the debug registers. -For the data addresses, DSU facilitates the @code{watch} command. -However the hardware breakpoint registers can only take two data watchpoints, -and both watchpoints must be the same kind. For example, you can set two -watchpoints with @code{watch} commands, two with @code{rwatch} -commands, @strong{or} two with @code{awatch} commands, but you cannot set one -watchpoint with one command and the other with a different command. +Currently, the @code{awatch} and @code{rwatch} commands can only set +hardware watchpoints, because accesses to data that don't change the +value of the watched expression cannot be detected without examining +every instruction as it is being executed, and @value{GDBN} does not do +that currently. If @value{GDBN} finds that it is unable to set a +hardware breakpoint with the @code{awatch} or @code{rwatch} command, it +will print a message like this: + +@smallexample +Expression cannot be implemented with read/access watchpoint. +@end smallexample + +Sometimes, @value{GDBN} cannot set a hardware watchpoint because the +data type of the watched expression is wider than what a hardware +watchpoint on the target machine can handle. For example, some systems +can only watch regions that are up to 4 bytes wide; on such systems you +cannot set hardware watchpoints for an expression that yields a +double-precision floating-point number (which is typically 8 bytes +wide). As a work-around, it might be possible to break the large region +into a series of smaller ones and watch them with separate watchpoints. + +If you set too many hardware watchpoints, @value{GDBN} might be unable +to insert all of them when you resume the execution of your program. +Since the precise number of active watchpoints is unknown until such +time as the program is about to be resumed, @value{GDBN} might not be +able to warn you about this when you set the watchpoints, and the +warning will be printed only when the program is resumed: + +@smallexample +Hardware watchpoint @var{num}: Could not insert watchpoint +@end smallexample + +@noindent +If this happens, delete or disable some of the watchpoints. + +The SPARClite DSU will generate traps when a program accesses some data +or instruction address that is assigned to the debug registers. For the +data addresses, DSU facilitates the @code{watch} command. However the +hardware breakpoint registers can only take two data watchpoints, and +both watchpoints must be the same kind. For example, you can set two +watchpoints with @code{watch} commands, two with @code{rwatch} commands, +@strong{or} two with @code{awatch} commands, but you cannot set one +watchpoint with one command and the other with a different command. @value{GDBN} will reject the command if you try to mix watchpoints. Delete or disable unused watchpoint commands before setting new ones. @@ -2713,6 +2745,16 @@ If you call a function interactively using @code{print} or @code{call}, any watchpoints you have set will be inactive until GDB reaches another kind of breakpoint or the call completes. +@value{GDBN} automatically deletes watchpoints that watch local +(automatic) variables, or expressions that involve 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, @emph{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 +@code{main} function and when it breaks, set all the watchpoints. + @quotation @cindex watchpoints and threads @cindex threads and watchpoints @@ -9820,11 +9862,11 @@ things without first using the debugger to find the facts. @c The readline documentation is distributed with the readline code @c and consists of the two following files: @c rluser.texinfo -@c inc-hist.texi +@c inc-hist.texinfo @c Use -I with makeinfo to point to the appropriate directory, @c environment var TEXINPUTS with TeX. @include rluser.texinfo -@include inc-hist.texi +@include inc-hist.texinfo @ifclear PRECONFIGURED diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo index 1dfd133..8787112 100644 --- a/gdb/doc/gdbint.texinfo +++ b/gdb/doc/gdbint.texinfo @@ -262,10 +262,10 @@ limited in number; when the user asks for more, GDB will start trying to set software breakpoints. Software breakpoints require GDB to do somewhat more work. The basic -theory is that GDB will replace a program instruction a trap, illegal -divide, or some other instruction that will cause an exception, and then -when it's encountered, GDB will take the exception and stop the program. -When the user says to continue, GDB will restore the original +theory is that GDB will replace a program instruction with a trap, +illegal divide, or some other instruction that will cause an exception, +and then when it's encountered, GDB will take the exception and stop the +program. When the user says to continue, GDB will restore the original instruction, single-step, re-insert the trap, and continue on. Since it literally overwrites the program being tested, the program area diff --git a/gdb/doc/remote.texi b/gdb/doc/remote.texi index d8636da..714b2a2 100644 --- a/gdb/doc/remote.texi +++ b/gdb/doc/remote.texi @@ -763,19 +763,27 @@ encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID. @tab See @code{remote.c:remote_unpack_thread_info_response()}. -@item remote command @strong{(reserved)} +@item remote command @tab @code{q}@code{Rcmd,}@var{COMMAND} @tab @var{COMMAND} (hex encoded) is passed to the local interpreter for -execution. @emph{Implementors should note that providing access to a +execution. Invalid commands should be reported using the output string. +Before the final result packet, the target may also respond with a +number of intermediate @code{O}@var{OUTPUT} console output +packets. @emph{Implementors should note that providing access to a stubs's interpreter may have security implications}. @item -@tab reply @var{OUTPUT} or @code{OK} +@tab reply @code{OK} +@tab +A command response with no output. +@item +@tab reply @var{OUTPUT} +@tab +A command response with the hex encoded output string @var{OUTPUT}. +@item +@tab reply @code{E}@var{NN} @tab -The @var{OUTPUT} is the hex encoded output from the command. @code{OK} -is returned when the @var{OUTPUT} would have been empty. The target may -also respond with a number of intermediate @code{O}@var{OUTPUT} console -output packets. +Indicate a badly formed request. @item @tab reply @samp{} -- cgit v1.1