* Auto-deleting watchpoints
@ 2003-12-02 20:38 Mihai Basa
2003-12-02 20:44 ` Daniel Jacobowitz
0 siblings, 1 reply; 4+ messages in thread
From: Mihai Basa @ 2003-12-02 20:38 UTC (permalink / raw)
To: gdb
Greetings all!
I'd like to question a certain behaviour of gdb, and I quote from the
man(ual):
"GDB 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."
This includes deleting local watchpoints even when the program makes a call to
a library function (say, sqrt()). I believe this auto-deletion _severly_
reduces the practicality of watchpoints, because they simply go away on the
first call they hit!
I am not totally aware about the way hardware watchpoints behave when the
processor switches Code-Segments (which is what happens?), but couldn't gdb at
least re-enable the watchpoint when it re-enters scope? Is there a bad
side-effect to this that I can't see?
Highest regards!
Mihai Basa
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Auto-deleting watchpoints
2003-12-02 20:38 Auto-deleting watchpoints Mihai Basa
@ 2003-12-02 20:44 ` Daniel Jacobowitz
2003-12-03 5:36 ` Eli Zaretskii
0 siblings, 1 reply; 4+ messages in thread
From: Daniel Jacobowitz @ 2003-12-02 20:44 UTC (permalink / raw)
To: Mihai Basa; +Cc: gdb
On Tue, Dec 02, 2003 at 08:40:23PM +0000, Mihai Basa wrote:
> Greetings all!
>
> I'd like to question a certain behaviour of gdb, and I quote from the
> man(ual):
>
> "GDB 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."
>
> This includes deleting local watchpoints even when the program makes a call to
> a library function (say, sqrt()). I believe this auto-deletion _severly_
> reduces the practicality of watchpoints, because they simply go away on the
> first call they hit!
That is not what is supposed to happen. The watchpoint should stay
until the function containing the local variable has exited. If you
have a testcase where that doesn't work, file a bug report (and try the
latest version of GDB), please.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Auto-deleting watchpoints
2003-12-02 20:44 ` Daniel Jacobowitz
@ 2003-12-03 5:36 ` Eli Zaretskii
0 siblings, 0 replies; 4+ messages in thread
From: Eli Zaretskii @ 2003-12-03 5:36 UTC (permalink / raw)
To: Daniel Jacobowitz; +Cc: Mihai.Basa, gdb
> Date: Tue, 2 Dec 2003 15:44:51 -0500
> From: Daniel Jacobowitz <drow@mvista.com>
> >
> > This includes deleting local watchpoints even when the program makes a call to
> > a library function (say, sqrt()). I believe this auto-deletion _severly_
> > reduces the practicality of watchpoints, because they simply go away on the
> > first call they hit!
>
> That is not what is supposed to happen. The watchpoint should stay
> until the function containing the local variable has exited.
Right. And I have simple test cases to prove it.
Mihai, you probably discovered a bug. Please send a test case.
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: Auto-deleting watchpoints
@ 2003-12-04 16:58 Mihai Basa
0 siblings, 0 replies; 4+ messages in thread
From: Mihai Basa @ 2003-12-04 16:58 UTC (permalink / raw)
To: gdb; +Cc: Eli Zaretskii
>===== Original Message From Eli Zaretskii <eliz@elta.co.il> =====
>> Date: Tue, 2 Dec 2003 15:44:51 -0500
>> From: Daniel Jacobowitz <drow@mvista.com>
>> >
>> > This includes deleting local watchpoints even when the program makes a
call to
>> > a library function (say, sqrt()). I believe this auto-deletion _severly_
>> > reduces the practicality of watchpoints, because they simply go away on
the
>> > first call they hit!
>>
>> That is not what is supposed to happen. The watchpoint should stay
>> until the function containing the local variable has exited.
>
>Right. And I have simple test cases to prove it.
>
>Mihai, you probably discovered a bug. Please send a test case.
I've tried this with gdb-6.0, and the fenomenon seems to have disappeared, but
I've only tested it lightly. I didn't really manage to isolate the bug, as it
only appeared in certain configurations of the source code, and showed up in
different places (so the test case is not simple at all). It appears that
gdb-6.0 has somehow solved this.
To summarize what was happening in gdb-5.3:
A watchpoint is set on an element of a malloc'ed array. The pointer to this
array is sent to a subroutine, where, after a while, the previously-set watch
gets deleted on a call to printf. The message produced is:
Watchpoint 2 deleted because the program has left the block in
which its expression is valid.
0x4008e00e in vfprintf () from /lib/i686/libc.so.6
and the source-line on which the watchpoint to "active_id[123]" got deleted
is:
printf("from i = %i at %lf at vel= %lf ", i,P[i].x[0] ,P[i].u[0]);
(it has nothing to do with active_id[123]). The backtrace was:
(gdb) backtrace
#0 0x4008e00e in vfprintf () from /lib/i686/libc.so.6
#1 0x00000000 in ?? ()
Now gdb-6.0 displays the 'watchpoint deleted' message only when it hits the
end of the program (in a library function called "_fini()").
Regards,
Mihai Basa
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2003-12-04 16:58 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-12-02 20:38 Auto-deleting watchpoints Mihai Basa
2003-12-02 20:44 ` Daniel Jacobowitz
2003-12-03 5:36 ` Eli Zaretskii
2003-12-04 16:58 Mihai Basa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox