This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Multiple breakpoint locations
> Date: Tue, 13 Nov 2007 15:39:31 -0800
> From: "Douglas Evans" <dje@google.com>
> Cc: "Vladimir Prus" <ghost@cs.msu.su>, gdb@sources.redhat.com
>
> On Nov 13, 2007 2:18 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> > > From: Vladimir Prus <ghost@cs.msu.su>
> > > Date: Tue, 13 Nov 2007 22:28:15 +0300
> > >
> > > > (gdb) d 1.1
> > > > warning: bad breakpoint number at or near '1.1'
> > >
> > > Well, you can't really delete a location -- if breakpoint expression
> > > corresponds to 20 addresses, that's the way it is -- you cannot delete
> > > some of those addresses from the program ;-)
> >
> > Sorry, I don't understand why; can you please elaborate? Removing a
> > breakpoint instruction from a specific address is a primitive
> > operation of the target back-end; why can't we use it for that single
> > address?
>
> I think it's a question of how much complexity one wants here. AIUI,
> the breakpoint is represented as source+line. One would have to
> augment that to mean source+line+except-this (I think).
Not necessarily. You could look up the struct bp_location that
corresponds to 1.1 (by using its address as a key), and remove that
struct bp_location from the chain we maintain for breakpoint 1.
> Also, it's not just "delete 1.1". It's also condition, commands, and
> ignore.
Well, removing struct bp_location should take care of that as well.
Am I missing something?
> I'm not suggesting all (or any) should be supported, just that we
> shouldn't tackle any of them without thinking the big picture
> through at least a bit.
Well, my big picture is that today we have no solution for the
following use case: (a) I set a breakpoint that results in multiple
locations; (b) I look at "info break" and realize that some of these
locations are irrelevant for the problem I'm debugging, and I don't
want the program to stop there (e.g., maybe stopping there will
disrupt some timing); (c) I want to remove these locations from the
breakpoints list.