From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4422 invoked by alias); 27 Apr 2005 13:06:22 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 4045 invoked from network); 27 Apr 2005 13:06:10 -0000 Received: from unknown (HELO legolas.inter.net.il) (192.114.186.24) by sourceware.org with SMTP; 27 Apr 2005 13:06:10 -0000 Received: from zaretski (IGLD-80-230-41-251.inter.net.il [80.230.41.251]) by legolas.inter.net.il (MOS 3.5.6-GR) with ESMTP id EFZ51177 (AUTH halo1); Wed, 27 Apr 2005 16:05:29 +0300 (IDT) Date: Wed, 27 Apr 2005 13:06:00 -0000 From: "Eli Zaretskii" To: Daniel Jacobowitz Message-ID: <01c54b29$Blat.v2.4$b1e75f80@zahav.net.il> Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=ISO-8859-1 CC: gdb-patches@sources.redhat.com In-reply-to: <20050424221155.GA13653@nevyn.them.org> (message from Daniel Jacobowitz on Sun, 24 Apr 2005 18:11:55 -0400) Subject: Re: Variable "foo" is not available Reply-to: Eli Zaretskii References: <20050401171947.GA19058@nevyn.them.org> <01c53768$Blat.v2.4$d52008a0@zahav.net.il> <20050402142639.GA27550@nevyn.them.org> <01c54803$Blat.v2.4$d5da9160@zahav.net.il> <20050424221155.GA13653@nevyn.them.org> X-SW-Source: 2005-04/txt/msg00352.txt.bz2 > Date: Sun, 24 Apr 2005 18:11:55 -0400 > From: Daniel Jacobowitz > > > > 2005-02-28 Daniel Jacobowitz > > > > > > * dwarf2loc.c (loclist_read_variable): Set optimized_out > > > instead of reporting an error. > > > * valprint.c (value_check_printable): New function. > > > (common_val_print): New function. Use value_check_printable. > > > (value_print): Use value_check_printable. > > > * value.h (common_val_print): Add prototype. > > > > Daniel, I asked this before, but didn't see any replies: what would > > the current GDB print when an argument from the function call is > > optimized away? I'd like to mention this in the manual. > > Hi Eli, > > Terribly sorry about not getting back to you since. I've not had time > to pull together a testcase to check, but it _should_ look like > foo (a=). The message comes from > value_check_printable in valprint.c. Thanks. I've committed the attached. 2005-04-27 Eli Zaretskii * gdb.texinfo (Backtrace): Describe backtraces with arguments that were optimized away. Index: gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.247 retrieving revision 1.248 diff -u -r1.247 -r1.248 --- gdb.texinfo 22 Apr 2005 13:09:27 -0000 1.247 +++ gdb.texinfo 27 Apr 2005 13:02:13 -0000 1.248 @@ -4170,6 +4170,35 @@ value, indicating that your program has stopped at the beginning of the code for line @code{993} of @code{builtin.c}. +@cindex value optimized out, in backtrace +@cindex function call arguments, optimized out +If your program was compiled with optimizations, some compilers will +optimize away arguments passed to functions if those arguments are +never used after the call. Such optimizations generate code that +passes arguments through registers, but doesn't store those arguments +in the stack frame. @value{GDBN} has no way of displaying such +arguments in stack frames other than the innermost one. Here's what +such a backtrace might look like: + +@smallexample +@group +#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) + at builtin.c:993 +#1 0x6e38 in expand_macro (sym=) at macro.c:242 +#2 0x6840 in expand_token (obs=0x0, t=, td=0xf7fffb08) + at macro.c:71 +(More stack frames follow...) +@end group +@end smallexample + +@noindent +The values of arguments that were not saved in their stack frames are +shown as @samp{}. + +If you need to display the values of such optimized-out arguments, +either deduce that from other variables whose values depend on the one +you are interested in, or recompile without optimizations. + @cindex backtrace beyond @code{main} function @cindex program entry point @cindex startup code, and backtrace