From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21971 invoked by alias); 2 Sep 2008 21:36:29 -0000 Received: (qmail 21962 invoked by uid 22791); 2 Sep 2008 21:36:28 -0000 X-Spam-Check-By: sourceware.org Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 02 Sep 2008 21:35:49 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 808372A965E; Tue, 2 Sep 2008 17:35:47 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id Oi98RPCE3d+9; Tue, 2 Sep 2008 17:35:47 -0400 (EDT) Received: from [127.0.0.1] (nile.gnat.com [205.232.38.5]) by rock.gnat.com (Postfix) with ESMTP id 63DC02A95F3; Tue, 2 Sep 2008 17:35:47 -0400 (EDT) Message-ID: <48BDB1B0.4040703@adacore.com> Date: Tue, 02 Sep 2008 21:36:00 -0000 From: Robert Dewar User-Agent: Thunderbird 2.0.0.16 (Windows/20080708) MIME-Version: 1.0 To: J R CC: gdb@sourceware.org Subject: Re: how to examine data with compiler optimization option set? References: <1220390777.48bdaf79617dd@imp.free.fr> In-Reply-To: <1220390777.48bdaf79617dd@imp.free.fr> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2008-09/txt/msg00009.txt.bz2 J R wrote: > Extract of GDB user manual: > > "Another possible effect of compiler optimizations is to optimize unused > variables out of existence, or assign variables to registers (as opposed to > memory addresses). Depending on the support for such cases offered by the debug > info format used by the compiler, GDB might not be able to display values for > such local variables. > > To solve such problems, either recompile without optimizations, or use a > different debug info format, if the compiler supports several such formats. For > example, GCC, the GNU C/C++ compiler usually supports the `-gstabs' option. > `-gstabs' produces debug info in a format that is superior to formats such as > COFF. You may be able to use DWARF2 (`-gdwarf-2'), which is also an effective > form for debug info. See section `Options for Debugging Your Program or GNU CC' > in Using GNU CC, for more information." > > I wanted to keep the optimization option, so I tried to recompile with GCC, > using the -gstabs and -gdwarf-2 options, and even -g3, with this very simple > program: > int main(void){ > int a = 1; > int b = 2; > int c = a+b; > > printf("Value c = %d \n", c); > } > > But still couldn't display the variables a, b and c! That's because if you ask for the compiler to optimize, it will change this program to int main(void){ printf ("Value c = %d \n", 3"); } if it was a bit cleverer, it might even change it to int main(void){ printf ("Value c = 3 \n"); } but in either case a,b, and c are gone! It might be theoretically possible to retain the values of a,b,c in the debugging information, but this is a huge amount of work, and not something likely to be done in the near future. > Is there a particular compiling option configuration to set? Yes, -O0, if you want junk code kept around for debugging purposes, you have to ask for it! > > Is there a particular compiling option configuration to set? > > Many thanks in advance. > > Regards.