Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@codesourcery.com>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: gdb-patches@sourceware.org, Tom Tromey <tromey@redhat.com>,
	Sergio Durigan Junior <sergiodj@redhat.com>
Subject: Re: [PATCH 2/6] Introduce `pre_expanded sals'
Date: Tue, 12 Apr 2011 13:30:00 -0000	[thread overview]
Message-ID: <201104121430.24596.pedro@codesourcery.com> (raw)
In-Reply-To: <20110412115308.GA384@host1.jankratochvil.net>

On Tuesday 12 April 2011 12:53:08, Jan Kratochvil wrote:
> On Tue, 12 Apr 2011 13:18:08 +0200, Pedro Alves wrote:
> > Hmm, doesn't sound right.  Conceptually, breakpoint locations are
> > multiple expansions of the same source location.  Different source locations
> > are different breakpoints.  E.g, bp_location doesn't have line
> > number or source file fields.  From the user's perpective, there's
> > only a single "point" in the source code for all the multiple locations
> > for a single breakpoint.
> 
> What about generalizing this so that breakpoint locations is a set of PCs
> matching the breakpoint expression?  

I disagree with that generalization.  E.g., next, you'll want that
a break on "C::C" (with C being a C++ class) sets a location on each
contructor overload).  And then breakpoints set in in-charge and
not-in-charge versions of each of those constructors ends up at the
same hierarchycal level under that super breakpoint.  If the user wants
to disable one of the (source level) overloads, he now needs to know
about the multiple locations of that specific overload.  I think you'd
want a "breakpoint group", with 3 levels of hierarchy.  Another argument,
is that frontends and users using them aren't expecting that a single
breakpoint is represented by more than one visual "point", circle next to
the sources, or something like that.  Hitting F8 to toggle a breakpoint's
enablement changing some other location source "point" enablement
in the sources not currently visible seems to break some abstration
to me.  I think such design change needs to consider all these
issues (and be experimented with some frontend).

I strongly suggest not relying on changing this as prerequisite
for stap support.

> Currently I do not understand how to fix:
> 	KFAIL: gdb.cp/re-set-overloaded.exp: start (GDB internal error) (PRMS: breakpoints/11657)
> 
> as currently breakpoint_re_set would need to create/delete user-visible
> breakpoint numbers.

Dunno.  Create new breakpoints or the extra overloads.  Or pick C::C() if it
exists, or any other contructor (or overload),  the first that matches, and
stick to it.  Or do consider generalizing like described above.

> 
> With the "new" (for some years) syntax `enable X.Y' ane `disable X.Y' one can
> control which breakpoints are active easily.
> 
> (gdb) break C::C
> Breakpoint 1 at 0x7d1: file ./gdb.cp/re-set-overloaded.cc, line 22.
> Breakpoint 2 at 0x7ba: file ./gdb.cp/re-set-overloaded.cc, line 21. (2 locations)
> warning: Multiple breakpoints were set.
> Use the "delete" command to delete unwanted breakpoints.
> (gdb) disable 2.2
> (gdb) info breakpoints 
> Num     Type           Disp Enb Address            What
> 1       breakpoint     keep y   0x00000000000007d1 in C::C(int) at ./gdb.cp/re-set-overloaded.cc:22
> 2       breakpoint     keep y   <MULTIPLE>         
> 2.1                         y     0x00000000000007ba in C::C() at ./gdb.cp/re-set-overloaded.cc:21
> 2.2                         n     0x00000000000007c4 in C::C() at ./gdb.cp/re-set-overloaded.cc:21
> 
> So that `set multiple-symbols ask' could be removed (probably completely incl.
> the `cancel' option).
> 
> I find the current two kinds of multiple breakpoints confusing to users (at
> least to myself).
> 
> 
> Thanks,
> Jan
> 

-- 
Pedro Alves


  reply	other threads:[~2011-04-12 13:30 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-04  3:08 Sergio Durigan Junior
2011-04-06 20:13 ` Tom Tromey
2011-04-12 11:18   ` Pedro Alves
2011-04-12 11:53     ` Jan Kratochvil
2011-04-12 13:30       ` Pedro Alves [this message]
2011-04-12 20:34         ` Tom Tromey
2011-04-12 22:22         ` Matt Rice
2011-04-13  9:53           ` Eli Zaretskii
2011-07-27 17:08         ` Tom Tromey
2011-07-29 20:36           ` Sergio Durigan Junior
2011-08-04 20:41             ` Tom Tromey
2011-08-05  3:41               ` Sergio Durigan Junior
2011-08-05 14:40                 ` Tom Tromey
2011-08-05 18:06                   ` Sergio Durigan Junior
2011-08-10 14:24           ` Tom Tromey
2011-05-03 16:09       ` Jerome Guitton
2011-05-03 18:17         ` Joel Brobecker
2011-04-12 20:26     ` Tom Tromey
2011-04-13  9:51       ` Eli Zaretskii
2011-04-13 19:20         ` Tom Tromey
2011-04-15 10:37           ` Eli Zaretskii
2011-04-18 18:37       ` Pedro Alves
2011-04-27 18:02         ` Jan Kratochvil
2011-04-29 20:42         ` Tom Tromey
2011-04-11 21:08 ` Jan Kratochvil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201104121430.24596.pedro@codesourcery.com \
    --to=pedro@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jan.kratochvil@redhat.com \
    --cc=sergiodj@redhat.com \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox