Problems outputting a string

Daniel Jacobowitz drow@mvista.com
Thu Feb 27 19:27:00 GMT 2003


On Fri, Feb 28, 2003 at 01:13:19PM -0500, jacques wrote:
> woops, had the gdb output paste wrong, here it is(everything else was
> correct):
> 
> 
> bash-2.05b$ gdb tetete.o
> GNU gdb 5.3
> Copyright 2002 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "i686-pc-linux-gnu"...
> (gdb) b 7
> Breakpoint 1 at 0x80486ad: file /home/palomer/tetete.cpp, line 7.
> (gdb) r
> Starting program: /home/palomer/tetete.o
> 
> Breakpoint 1, foo() () at /home/palomer/tetete.cpp:7
> 7 return ret;
> (gdb) p ret
> $1 = {static npos = 4294967295,
> _M_dataplus = {<allocator<char>> = {<No data fields>},
> _M_p = 0xbffff7a0
> "T\233\004\ba"+$@?÷y"?\035\205\004\bT_\022@a"+$@?÷y"?d\n\023@\
> 001"}, static _S_empty_rep_storage = {0, 0, 0, 0}}

The short version: If you get a CVS snapshot of GDB (see
http://sources.redhat.com/gdb/ for how to get one) this will be fixed.

The long version, for the curious:

The debug info for ret says:

 <2><bdba>: Abbrev Number: 107 (DW_TAG_variable)
     DW_AT_name        : ret    
     DW_AT_decl_file   : 1      
     DW_AT_decl_line   : 5      
     DW_AT_type        : <7759> 
     DW_AT_location    : 3 byte block: 91 8 6   (DW_OP_fbreg: 8; DW_OP_deref; )

Note the DW_OP_deref at the end.  decode_locdesc et al. support
arguments which are frame-base relative and passed by reference, but
not variables which are stored by reference.  Oops.

However, LOC_COMPUTED handles this perfectly gracefully.  It would make
a great test-case; I'll add it later.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer



More information about the Gdb mailing list