From: Gary Benson <gbenson@redhat.com>
To: Doug Evans <dje@google.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA take 4] Allow setting breakpoints on inline functions (PR 10738)
Date: Wed, 15 Feb 2012 12:17:00 -0000 [thread overview]
Message-ID: <20120215094752.GA2712@redhat.com> (raw)
In-Reply-To: <CADPb22TCd3xJ51S4FRStJO8YRVF8rX6FoSTVY2Tu1JvfjQpcCA@mail.gmail.com>
Doug Evans wrote:
> On Tue, Feb 14, 2012 at 1:02 AM, Gary Benson <gbenson@redhat.com> wrote:
> > Doug Evans wrote:
> > > On Mon, Feb 13, 2012 at 10:47 AM, Gary Benson <gbenson@redhat.com> wrote:
> > > > This patch makes GDB able to set breakpoints on inlined
> > > > functions.
> > > >
> > > > This version of the patch has been updated to fix the issues
> > > > Jan pointed out with the last version.
> > > >
> > > > This patch bumps the version number of the .gdb-index to 6,
> > > > but it does not remove any of the backwards compatibility code
> > > > which I would prefer to do as a separate patch.
> > >
> > > I agree support for older versions should be a separate patch.
> > > However this patch doesn't do that (it removes current
> > > acceptance of older versions of the index).
> >
> > That's correct. Â The older versions do not contain partial symbols
> > for inlined functions. Â If GDB were to be run on a file with an
> > older versioned index without rejecting it then the ability to set
> > breakpoints on inlined functions would silently fail.
>
> "silently fail" as in "work *worse* than it did in previous gdb
> versions"?
It wouldn't work *worse* than previous gdb versions--it would be the
same--but it would work worse than itself. You would have the
situation where an optimization was causing functionality to be lost,
and that doesn't seem right to me.
> While it may seem like it's always a win to just discard the index
> to get new functionality, I'm not sure all users would agree with
> that in all situations. If gdb 7.4 startup takes 5 seconds and gdb
> 7.5 startup takes 45 seconds on the same binary, and our response to
> their complaint is that they have to rebuild the index, I'm not sure
> I'd be comfortable with that. Especially if, for example, they're,
> say, debugging a core file and can't use the new functionality
> anyway. ***OTOH***, if there is a functional *regression* (as
> opposed to a speed regression) then I'd be much more comfortable
> with discarding the index.
> [to repeat my question above, for clarity's sake: Is there a
> functional regression if we don't discard the index?]
> OTOOH, 1/2 :-), why must there be a functional regression? [as
> opposed to the absence of a new feature or capability]
I guess it depends on how you define a functional regression.
If you compare GDB as it is now, GDB with this patch, and GDB with
this patch minus the index version, the functionality would look
like this:
| GDB GDB GDB
| now ver bump no ver bump
-------------------------+-----------------------------------
|
Break on inline funcs | no yes yes
in files without index |
|
Break on inline funcs | no yes no
in files with old index | (ignored)
|
Break on inline funcs | no yes yes
in files with new index |
GDB's behaviour is inconsistent if you don't rejecting the old index
files. That seemed like a bad thing to be introducing.
> One could support the old version for a release or two, and print a
> warning when older versions are encountered.
I wondered about this myself, though it was pointed out to me that
printed warnings often get lost in the noise.
> The user's build procedure may involve building the index in a way
> that is not easily updated in a timely manner. Thus all the speed
> improvements are (at least temporarily, but for a long enough time to
> be troublesome) wiped out simply by using a *newer* version of gdb.
> And that makes me uncomfortable.
How would it be if there the default behaviour was be to reject old
indexes (as the patch does now) but with the addition of a flag
("maint set allow-old-gdb-indexes" perhaps?) that would allow users in
this particular situation to get around it? That way, our response to
complaints can be "rebuild the index *or* use this flag (which by the
way will lose you such and such a functionality)" Inconsistent
behaviour doesn't seem so bad if the user asked for it.
Cheers,
Gary
--
http://gbenson.net/
next prev parent reply other threads:[~2012-02-15 9:48 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-13 18:47 Gary Benson
2012-02-14 1:39 ` Doug Evans
2012-02-14 9:02 ` Gary Benson
2012-02-15 8:05 ` Doug Evans
2012-02-15 12:17 ` Gary Benson [this message]
2012-02-15 20:14 ` Doug Evans
2012-02-16 10:41 ` Gary Benson
2012-02-17 22:42 ` Doug Evans
2012-02-21 16:32 ` Gary Benson
2012-02-14 9:34 ` Mark Wielaard
2012-02-14 9:38 ` Jan Kratochvil
2012-02-14 9:48 ` Mark Wielaard
2012-02-14 10:51 ` Gary Benson
2012-02-14 18:04 ` Eli Zaretskii
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=20120215094752.GA2712@redhat.com \
--to=gbenson@redhat.com \
--cc=dje@google.com \
--cc=gdb-patches@sourceware.org \
/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