Re: debugging a dynamically loaded library

H . J . Lu
2001-08-29T16:07:00Z

On Wed, Aug 29, 2001 at 03:41:26PM -0700, Kevin Buettner wrote:
>
> saguaro:dynlib$ /saguaro1/sourceware/bld-saguaro/gdb/gdb main
> GNU gdb 2001-08-21-cvs (MI_OUT)
> Copyright 2001 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 main.c:23
> Breakpoint 1 at 0x80487fc: file main.c, line 23.
> (gdb) r
> Starting program: /home/kev/ctests/dynlib/main
>
> Breakpoint 1, main (argc=1, argv=0xbffffa2c) at main.c:23
> 23 init = dlsym(handle, "dso_init");
> (gdb) b dso_init
> Breakpoint 2 at 0x400188a2: file dso.c, line 10.

For some reason, it doesn't work for me:

GNU gdb 2001-08-29-cvs (MI_OUT)
....
(gdb) b main.c:23
Breakpoint 1 at 0x8048820: file main.c, line 23.
(gdb) r
Starting program: /home/hjl/bugs/gdb/dlopen/main

Breakpoint 1, main (argc=1, argv=0xbffff804) at main.c:23
23 init = dlsym(handle, "dso_init");
(gdb) b dso_init
Cannot access memory at address 0x123
(gdb) p dso_init
$1 = {<text variable, no debug info>} 0x40017800 <dso_init>
(gdb) info shared
From To Syms Read Shared Object Library
0x400281d0 0x40028fc0 Yes /lib/libdl.so.2
0x40047400 0x40147080 Yes /lib/i686/libc.so.6
0x40001eb0 0x40012f20 Yes /lib/ld-linux.so.2
0x400176d0 0x400178b0 Yes ./dso.so

I am using glibc 2.2.4 on x86. It seems that gdb doesn't add the base
address of ./dso.so.

H.J.