From: Daniel Jacobowitz <dan@codesourcery.com>
To: "André Pönitz" <andre.poenitz@nokia.com>
Cc: gdb@sourceware.org
Subject: Re: Getting pissed off by gdb. Please help with stepping in.
Date: Thu, 18 Mar 2010 14:13:00 -0000 [thread overview]
Message-ID: <20100318141335.GA12031@caradoc.them.org> (raw)
In-Reply-To: <201003181506.15964.andre.poenitz@nokia.com>
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 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
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.
--
Daniel Jacobowitz
CodeSourcery
next prev parent reply other threads:[~2010-03-18 14:13 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 [this message]
2010-03-18 14:33 ` André Pönitz
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=20100318141335.GA12031@caradoc.them.org \
--to=dan@codesourcery.com \
--cc=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