Re: Unable to find dynamic linker breakpoint function.

Hareesh Nagarajan
2005-02-25T19:37:09Z

Kris Warkentin wrote:
> I think you're seeing two different problems here but they may have the
> same root. Gdb may be finding the wrong glibc - that is, not the same
> one that the program is using. Try 'info shared' to see what gdb is using.

I don't know how 'info shared' helps, but this might:

hareesh: hareesh/ $ ldd new
linux-gate.so.1 => (0xffffe000)
libstdc++.so.5 =>
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/libstdc++.so.5 (0xb7f0d000)
libm.so.6 => /lib/libm.so.6 (0xb7eeb000)
libgcc_s.so.1 =>
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/libgcc_s.so.1 (0xb7ee2000)
libc.so.6 => /lib/libc.so.6 (0xb7dce000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fea000)

I have compiled libstdc++ with '-g -fomit-frame-pointer'.

Additionally, I use Gentoo Linux and that this problem of mine affects
debugging member functions of C++ STL containers. So how could the wrong
glibc be the problem?

> As far as the stop goes, string::at(2) may have been inlined in which
> case the breakpoint may well be in that code. You might want to look at
> the assembly. Try breaking on seven, nexting to 8 and see if you get
> the same result. Or clear the breakpoint before calling x.at(2).

I did that. But that doesn't change anything as can be seen below.

Breakpoint 1, main () at new.cc:7
7 string x("heloo");
(gdb) n
8 cout << x.at(2);
(gdb) inspect x.at(2)

Breakpoint 1, main () at new.cc:7
7 string x("heloo");
The program being debugged stopped while in a function called from GDB.
When the function (std::string::at(unsigned) const) is done executing,
GDB will silently stop (instead of continuing to evaluate the expression
containing the function call).

I have no idea how to fix this problem and it is frankly driving me mad!

Thanks,

Hareesh