From: Glynn Clements <glynn@gclements.plus.com>
To: James Colannino <james@colannino.org>
Cc: linux-c-programming@vger.kernel.org
Subject: Re: Debugging
Date: Sun, 29 Jan 2006 18:14:25 +0000 [thread overview]
Message-ID: <17373.1537.756816.193269@cerise.gclements.plus.com> (raw)
In-Reply-To: <43DC5EFA.7010001@colannino.org>
James Colannino wrote:
> Hey everyone. I have a small program that I had written a while ago in
> C to help me study for my Spanish class. I decided to rewrite some code
> recently being that I have a little more experience, and found that the
> program does not function properly when I compile with -O2 optimizations
> (I'm using GCC.) It works as it should, however, when there are no
> optimizations. How exactly should I go about debugging this and
> figuring out what code is causing the problem? I could compile it with
> the -g option and feed it to GDB, but then doesn't debugging not work
> very well when you've done optimizations? Is -O2 a low enough level of
> optimization that I shouldn't have a problem? Debugging is one of the
> many things I know extremely little about, so I'm very in the dark
> here. Any input would be greatly appreciated :) Thanks very much in
> advance.
Debugging optimised code is hard, as many of the expressions and
variables which appear in the source code simply don't exist in the
optimised machine code.
One option is to identify exactly which optimisations are problematic
by enabling or disabling specific optimisations using the various -f
switches. That might give you some clues as to where the problems lie.
Probably the most common reasons for code breaking when optimisation
is enabled are aliasing bugs, i.e. where a storage location is
referenced in multiple ways. This is particularly common if you use
pointer type casts or "type-punning" (storing a value in one field of
a union then reading from another field with a different type). Try
using -fno-strict-aliasing to see if aliasing is the problem.
--
Glynn Clements <glynn@gclements.plus.com>
next prev parent reply other threads:[~2006-01-29 18:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-29 6:21 Debugging James Colannino
2006-01-29 16:21 ` Debugging Steve Graegert
2006-01-29 18:14 ` Glynn Clements [this message]
2006-01-30 19:09 ` Debugging James Colannino
[not found] ` <20060129105131.6813f695.leslie.polzer@gmx.net>
2006-01-30 19:13 ` Debugging James Colannino
2006-01-30 19:21 ` Debugging James Colannino
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=17373.1537.756816.193269@cerise.gclements.plus.com \
--to=glynn@gclements.plus.com \
--cc=james@colannino.org \
--cc=linux-c-programming@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).