This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: STOPPED_BY_WATCHPOINT peculiarity
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: Doug Evans <dje at transmeta dot com>
- Cc: gdb at sources dot redhat dot com
- Date: Tue, 2 Apr 2002 17:01:45 -0500
- Subject: Re: STOPPED_BY_WATCHPOINT peculiarity
- References: <200204022154.NAA10074@casey.transmeta.com>
On Tue, Apr 02, 2002 at 01:54:47PM -0800, Doug Evans wrote:
> Something is not right, or at least confusing, in watchpoint-land.
>
> This code in infrun.c is odd:
>
> /* It may be possible to simply continue after a watchpoint. */
> if (HAVE_CONTINUABLE_WATCHPOINT)
> STOPPED_BY_WATCHPOINT (ecs->ws);
>
> STOPPED_BY_WATCHPOINT is a predicate.
> Therefore at first glance this code is pointless.
>
> Things are slightly less confusing by recognizing that in the
> process of computing STOPPED_BY_WATCHPOINT some debugging printf's
> may get printed. e.g. grep for maint_show_dr in
> i386-nat.c:i386_stopped_data_address.
>
> nm-i386.h:
> #define STOPPED_BY_WATCHPOINT(W) (i386_stopped_data_address () != 0)
>
> Is that all there is to it?
>
> If so, a comment should be added, maybe something like
>
> - /* It may be possible to simply continue after a watchpoint. */
> + /* It may be possible to simply continue after a watchpoint.
> + While at first glance this code is pointless, STOPPED_BY_WATCHPOINT
> + is called in case there are any maintenance debugging printf's. */
> if (HAVE_CONTINUABLE_WATCHPOINT)
> STOPPED_BY_WATCHPOINT (ecs->ws);
What astonishing timing... I believe there is more going on here, and I
was in the middle of looking at this code just a moment ago. See the
test failure on i386-linux in gdb.c++/annota2.exp (watch a.x). We have
a problem actually correctly detecting that we are stopped by a
watchpoint.
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer