This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: info locals gives error
- From: Nick Roberts <nickrob at snap dot net dot nz>
- To: Eli Zaretskii <eliz at gnu dot org>
- Cc: gdb at sources dot redhat dot com
- Date: Sun, 2 Apr 2006 18:59:19 +1200
- Subject: Re: info locals gives error
- References: <17452.52811.89546.605084@farnswood.snap.net.nz> <uzmj79gcf.fsf@gnu.org>
> > /* -*- compile-command: "cc -g -o simple simple.c"; -*- */
> >
> > main(int argc, char **argv) {
> > int i;
> > i = 1;
> > }
> > [...]
> > (gdb) b main
> > Breakpoint 1 at 0x8048354: file simple.c, line 3.
> > (gdb) r
> > Starting program: /home/nickrob/simple
> > Reading symbols from shared object read from target memory...done.
> > Loaded system supplied DSO at 0x80e000
> >
> > Breakpoint 1, main () at simple.c:3
> > 3 main(int argc, char **argv) {
> > (gdb) info locals
> > argc = Cannot access memory at address 0x0
>
> I cannot reproduce this with GDB 6.4 and GCC versions 3.3.5 and 4.0.0
> on a Debian box. I also tried GCC 3.4.2 and GDB 6.3 on a Windows box.
> What I get in all of those cases is some arbitrary garbage, not
> "cannot access".
With gcc --version
gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-1mdk)
(gdb) info args
argc = 1
argv = (char **) 0xbffff7a4
With gcc --version
gcc (GCC) 4.1.0 20060304 (Red Hat 4.1.0-3)
(gdb) info args
No arguments.
readelf -wi simple (for GCC 3.2) gives (about 1200 lines of output):
...
<2><c6d>: Abbrev Number: 3 (DW_TAG_formal_parameter)
DW_AT_name : (indirect string, offset: 0x98e): argc
DW_AT_decl_file : 1
DW_AT_decl_line : 3
DW_AT_type : <c96>
DW_AT_location : 2 byte block: 91 8 (DW_OP_fbreg: 8; )
<2><c7b>: Abbrev Number: 3 (DW_TAG_formal_parameter)
DW_AT_name : (indirect string, offset: 0x993): argv
DW_AT_decl_file : 1
DW_AT_decl_line : 3
DW_AT_type : <c9d>
DW_AT_location : 2 byte block: 91 c (DW_OP_fbreg: 12; )
<2><c89>: Abbrev Number: 4 (DW_TAG_variable)
DW_AT_name : i
DW_AT_decl_file : 1
DW_AT_decl_line : 4
DW_AT_type : <c96>
DW_AT_location : 2 byte block: 91 7c (DW_OP_fbreg: -4; )
...
readelf -wi simple (for GCC 4.1.0) gives (about 60 lines of output):
...
<2><75>: Abbrev Number: 3 (DW_TAG_formal_parameter)
DW_AT_name : argc
DW_AT_decl_file : 1
DW_AT_decl_line : 3
DW_AT_type : <9a>
<2><81>: Abbrev Number: 3 (DW_TAG_formal_parameter)
DW_AT_name : argv
DW_AT_decl_file : 1
DW_AT_decl_line : 3
DW_AT_type : <a1>
<2><8d>: Abbrev Number: 4 (DW_TAG_variable)
DW_AT_name : i
DW_AT_decl_file : 1
DW_AT_decl_line : 4
DW_AT_type : <9a>
DW_AT_location : 2 byte block: 91 70 (DW_OP_fbreg: -16)
...
I presume something is up with GCC 4.1.0 (which apparently is a part of a
separate series to 4.0).
Nick