From: "André Pönitz" <andre.poenitz@nokia.com>
To: gdb@sourceware.org
Subject: Re: Getting pissed off by gdb. Please help with stepping in.
Date: Thu, 18 Mar 2010 14:33:00 -0000 [thread overview]
Message-ID: <201003181533.05408.andre.poenitz@nokia.com> (raw)
In-Reply-To: <20100318141335.GA12031@caradoc.them.org>
On Thursday 18 March 2010 15:13:38 Daniel Jacobowitz wrote:
> On Thu, Mar 18, 2010 at 03:06:15PM +0100, André Pönitz wrote:
> > This means a 'next' effectively jumps over two lines, which is rather nasty.
> > So I have been removing this optimization in gdb for a while (as the stub
> > is not under my control) without experiencing any bad side effects. Most
> > notably, stepping over for (;;) does not seem to be affected at all.
>
> It's not an "optimization" - it's to improve the user experience, not
> to improve performance.
I used the term from the comment
"Optimize by setting the stepping range to the line."
For me it's in fact the opposite to an optimization as the single stepping
through the rest of the second line leads to one round trip through the
stub for each of the remaining instructions which easily sums up to a
couple of seconds for lines that generate a hundred instructions.
> > I dug a bit in gdb's history, and the code is older than anything I could
> > access, i.e. before 1991 or so. Together with the comment "That is said
> > to make things like for (;;) statements work better" one might get the
> > impression that it was a workaround for some particular compiler or such.
> >
> > Does anybody happen to remember what triggered the inclusion of this
> > optimization into gdb code?
>
> I certainly don't remember, but I can make an educated guess. It
> depends how your compiler lays out for loops. If the
> condition on the for statement is adjacent to the initial operation:
>
> for-init
> for-cond
> loop-body
> for-increment
> unconditional branch to for-cond
>
> Then stepping past the last line in loop-body will take you to the
> middle of the "line" containing all of init, cond, and increment.
>
> I don't think that's how GCC lays out loops nowadays, I think it's
> more:
>
> for-init
> branch-forwards-to-cond
> loop-body
> for-increment
> for-cond
I see. Thanks for the explanation.
> Whether the current behavior matters in practice, there I have no
> idea.
>
> One thing I've found helpful is to diff gdb testsuite log files with
> such a change; the diff is noisy, but you can see if there was any
> meaningful impact.
I'll do that.
Andre'
next prev parent reply other threads:[~2010-03-18 14:33 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-18 2:39 temp
2010-03-18 3:00 ` Hui Zhu
2010-03-18 3:03 ` Nathan Froyd
2010-03-18 7:22 ` Doug Evans
2010-03-18 9:07 ` Eli Zaretskii
2010-03-18 15:10 ` Doug Evans
2010-03-18 15:21 ` Pedro Alves
2010-03-18 18:33 ` Eli Zaretskii
2010-03-18 18:55 ` Pedro Alves
2010-03-18 19:38 ` Eli Zaretskii
2010-03-18 19:54 ` Mark Kettenis
2010-03-18 20:43 ` Doug Evans
2010-03-18 20:51 ` Michael Snyder
2010-03-18 21:17 ` Pedro Alves
2010-03-18 21:12 ` Eli Zaretskii
2010-03-18 23:37 ` Paul Hilfinger
2010-03-19 9:51 ` Richard Earnshaw
2010-03-19 10:41 ` Mark Kettenis
2010-03-19 13:19 ` Eli Zaretskii
2010-03-19 10:19 ` André Pönitz
2010-03-18 15:28 ` Doug Evans
2010-03-18 18:31 ` Eli Zaretskii
2010-03-18 18:37 ` Paul Koning
2010-03-18 19:06 ` Doug Evans
2010-03-18 20:48 ` Jonas Maebe
2010-03-18 13:33 ` Daniel Jacobowitz
2010-03-18 14:06 ` André Pönitz
2010-03-18 14:13 ` Daniel Jacobowitz
2010-03-18 14:33 ` André Pönitz [this message]
2010-03-18 14:39 ` Daniel Jacobowitz
2010-03-18 14:54 ` André Pönitz
2010-03-18 15:40 ` Doug Evans
2010-03-18 17:41 ` Michael Snyder
2010-03-18 22:44 ` temp
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=201003181533.05408.andre.poenitz@nokia.com \
--to=andre.poenitz@nokia.com \
--cc=gdb@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