From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31086 invoked by alias); 21 Oct 2006 22:28:20 -0000 Received: (qmail 31068 invoked by uid 22791); 21 Oct 2006 22:28:13 -0000 X-Spam-Check-By: sourceware.org Received: from smtp10.hccnet.nl (HELO smtp10.hccnet.nl) (62.251.0.13) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 21 Oct 2006 22:28:05 +0000 Received: from [192.168.0.151] by smtp10.hccnet.nl via [80.100.236.49] with ESMTP id k9LMRumZ015451 (8.13.6/2.05); Sun, 22 Oct 2006 00:27:57 +0200 (MET DST) Message-ID: <453A9EE4.1070800@hccnet.nl> Date: Sat, 21 Oct 2006 22:28:00 -0000 From: Erik Leunissen User-Agent: Thunderbird 1.5 (X11/20051201) MIME-Version: 1.0 To: Eli Zaretskii CC: gdb@sourceware.org Subject: Re: breakpoint for accessing memory location References: <4537DBC6.1030807@hccnet.nl> <20061019201214.GA32332@nevyn.them.org> <4537DEDC.5000008@hccnet.nl> <4538FF9D.9070803@hccnet.nl> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Status: Clean X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2006-10/txt/msg00184.txt.bz2 Eli Zaretskii wrote: > > I fixed the manual as shown below. Please see if this addresses your > concerns. > It certainly does. See one nit below. Thanks, Erik Leunissen > A @dfn{watchpoint} is a special breakpoint that stops your program > -when the value of an expression changes. You must use a different > -command to set watchpoints (@pxref{Set Watchpoints, ,Setting > -watchpoints}), but aside from that, you can manage a watchpoint like > -any other breakpoint: you enable, disable, and delete both breakpoints > -and watchpoints using the same commands. > +when the value of an expression changes. The expression may be a value ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +of a variable, or it could involve values of one or more variables ^^^^^^^^^^^^^ We watch for a change in the value of the variable, OK. However the corresponding expression for that case simply holds the *name* of the variable, doesn't it? > +combined by operators, such as @samp{a + b}. This is sometimes called > +@dfn{data breakpoints}. You must use a different command to set > +watchpoints (@pxref{Set Watchpoints, ,Setting watchpoints}), but aside > +from that, you can manage a watchpoint like any other breakpoint: you > +enable, disable, and delete both breakpoints and watchpoints using the > +same commands. > > You can arrange to have values from your program displayed automatically > whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,, > @@ -3106,7 +3110,24 @@ > @cindex setting watchpoints > You can use a watchpoint to stop execution whenever the value of an > expression changes, without having to predict a particular place where > -this may happen. > +this may happen. (This is sometimes called a @dfn{data breakpoint}.) > +The expression may be as simple as the value of a single variable, or ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ same here > +as complex as many variables combined by operators. Examples include: > + > +@itemize @bullet > +@item > +A reference to the value of a single variable. > + > +@item > +An address cast to an appropriate data type. For example, > +@samp{*(int *)0x12345678} will watch a 4-byte region at the specified > +address (assuming an @code{int} occupies 4 bytes). > + > +@item > +An arbitrarily complex expression, such as @samp{a*b + c/d}. The > +expression can use any operators valid in the program's native > +language (@pxref{Languages}). > +@end itemize > > @cindex software watchpoints > @cindex hardware watchpoints > @@ -3124,8 +3145,14 @@ > @table @code > @kindex watch > @item watch @var{expr} > -Set a watchpoint for an expression. @value{GDBN} will break when @var{expr} > -is written into by the program and its value changes. > +Set a watchpoint for an expression. @value{GDBN} will break when the > +expression @var{expr} is written into by the program and its value > +changes. The simplest (and the most popular) use of this command is > +to watch the value of a single variable: > + > +@smallexample > +(@value{GDBP}) watch foo > +@end smallexample > > @kindex rwatch > @item rwatch @var{expr} > @@ -3217,6 +3244,11 @@ > @noindent > If this happens, delete or disable some of the watchpoints. > > +Watching complex expressions that reference many variables can also > +exhaust the resources available for hardware-assisted watchpoints. > +That's because @value{GDBN} needs to watch every variable in the > +expression with separately allocated resources. > + > 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 > >