Re: Viewing the address of an array in gdb

Pedro Alves <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 07/06/2018 01:00 PM, Pedro Alves wrote:
> On 07/06/2018 12:51 PM, Pedro Alves wrote:
>> On 07/06/2018 04:33 AM, Mahmood Naderan via gdb wrote:
>>> Hi,
>>> I have define "char buffer[100]" in a C code. Trying to view the location of buffer in GDB, I see this
> 
> Ah, I missed the "you have defined a buffer yourself" part.
> 
> So what seems to be happening is that there's another symbol also 
> called "buffer" in glibc:
> 
>  (gdb) info symbol buffer
>  buffer in section .bss of /lib64/libc.so.6
> 
> and gdb is picking that symbol instead of yours.
> 
> I can reproduce this if I compile a small program without debug info,
> but with debug info (-g), it works as you'd expect.
> 
> I don't think we have syntax to disambiguate this, like
> 'libc.so.6'::buffer' vs 'program'::buffer, or program#buffer some
> such, unfortunately.
If you can't change the program, you can work around this by
unloading the shared library symbols, so that gdb sees the
program's symbol again.  E.g.:

(gdb) start
Temporary breakpoint 1 at 0x40048b
Starting program: /home/pedro/tmp/buffer 

Temporary breakpoint 1, 0x000000000040048b in main ()
(gdb) info symbol &buffer
buffer in section .bss of /lib64/libc.so.6
(gdb) nosharedlibrary 
(gdb) info symbol &buffer
buffer in section .bss
(gdb) x /30x  &buffer
0x601040 <buffer>:      0x00000000      0x00000000      0x00000000      0x00000000
0x601050 <buffer+16>:   0x00000000      0x00000000      0x00000000      0x00000000
0x601060 <buffer+32>:   0x00000000      0x00000000      0x00000000      0x00000000
0x601070 <buffer+48>:   0x00000000      0x00000000      0x00000000      0x00000000
0x601080 <buffer+64>:   0x00000000      0x00000000      0x00000000      0x00000000
0x601090 <buffer+80>:   0x00000000      0x00000000      0x00000000      0x00000000
0x6010a0 <buffer+96>:   0x00000000      0x00000000      0x00000000      0x00000000
0x6010b0:       0x00000000      0x00000000
(gdb) 

Thanks,
Pedro Alves
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.