This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: info locals gives error


 > > /* -*- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]