Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* gdb - loading symbols of shared library
@ 2008-10-12 12:58 rimon
  2008-10-12 15:36 ` Paul Pluzhnikov
  0 siblings, 1 reply; 3+ messages in thread
From: rimon @ 2008-10-12 12:58 UTC (permalink / raw)
  To: gdb


I am debugging in gdb a program that dynamically loads libodbcinst.so. I want
to debug the code from libodbcinst - I can break in it, see the source and
step through it, but whenever I try printing a variable, I get (e.g. for the
variable ret):
"No symbol "ret" in current context."

In my program libodbcinst.so loads my own library (an odbc driver). This
library I can debug fully, symbols and all.
Things I've verified:
- libodbcinst.so is compiled with debug information. I compiled it myself
from UnixODBC sources, and made sure it was compiled with debug info.
- libodcinst.so is not stripped - I ran 'nm' on it, and got a symbol table.
- From gdb I ran 'info share' and saw that libodbcinst.so was in the list of
loaded libraries. I also tried running 'sharedlibrary libodbcinst.so' but
this made no difference.
- I tried running add-symbol-file for the library. I must admit I have a
problem here. This command is supposed to receive an 'address' parameter.
The manual says this should be the address where the library was loaded. How
do I know that library? I tried putting different things there - for example
the address of the text segment I got from 'maint info sections', but not
only could I still not see the symbols, this also screwed up something with
the rest of the debugging.

So, in addition to a solution to show the symbols, I would also be very
grateful for an explanation of the address parameter for add-symbol-file.

I'm working on HP-UX 11.23 (Itanium). Using HP gdb (wdb) 5.7 .

TIA!

RO
-- 
View this message in context: http://www.nabble.com/gdb---loading-symbols-of-shared-library-tp19941465p19941465.html
Sent from the Sourceware - gdb list mailing list archive at Nabble.com.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gdb - loading symbols of shared library
  2008-10-12 12:58 gdb - loading symbols of shared library rimon
@ 2008-10-12 15:36 ` Paul Pluzhnikov
  2008-10-15 10:53   ` rimon
  0 siblings, 1 reply; 3+ messages in thread
From: Paul Pluzhnikov @ 2008-10-12 15:36 UTC (permalink / raw)
  To: rimon; +Cc: gdb

On Sun, Oct 12, 2008 at 5:57 AM, rimon <rorni@yahoo.com> wrote:
>
> I am debugging in gdb a program that dynamically loads libodbcinst.so. I want
> to debug the code from libodbcinst - I can break in it, see the source and
> step through it, but whenever I try printing a variable, I get (e.g. for the
> variable ret):
> "No symbol "ret" in current context."

Most often this is the result of libodbcinst.so being compiled
with 'gcc -g -O2'. Compiler has optimized the variable out.

> In my program libodbcinst.so loads my own library (an odbc driver). This
> library I can debug fully, symbols and all.

Your own library was compiled without -O*.

> Things I've verified:
> - libodbcinst.so is compiled with debug information. I compiled it myself
> from UnixODBC sources, and made sure it was compiled with debug info.

You can verify that it was compiled with '-O2 -g', and rebuilt it
with 'CFLAGS=-g -O0'.

> - libodcinst.so is not stripped - I ran 'nm' on it, and got a symbol table.
> - From gdb I ran 'info share' and saw that libodbcinst.so was in the list of
> loaded libraries. I also tried running 'sharedlibrary libodbcinst.so' but
> this made no difference.
> - I tried running add-symbol-file for the library.

If the library is listed in 'info shared' (which must be true since you can
set breakpoints in it), then GDB has already added it; you don't need
to do that.

> I must admit I have a
> problem here. This command is supposed to receive an 'address' parameter.
> The manual says this should be the address where the library was loaded. How
> do I know that library? I tried putting different things there - for example
> the address of the text segment I got from 'maint info sections', but not
> only could I still not see the symbols, this also screwed up something with
> the rest of the debugging.

Calculation of the address is somewhat complicated,
and adding the library at the wrong address will result in GDB
"loosing" it.

>
> So, in addition to a solution to show the symbols, I would also be very
> grateful for an explanation of the address parameter for add-symbol-file.
>
> I'm working on HP-UX 11.23 (Itanium). Using HP gdb (wdb) 5.7 .
>
> TIA!
>
> RO
> --
> View this message in context: http://www.nabble.com/gdb---loading-symbols-of-shared-library-tp19941465p19941465.html
> Sent from the Sourceware - gdb list mailing list archive at Nabble.com.
>
>



-- 
Paul Pluzhnikov


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gdb - loading symbols of shared library
  2008-10-12 15:36 ` Paul Pluzhnikov
@ 2008-10-15 10:53   ` rimon
  0 siblings, 0 replies; 3+ messages in thread
From: rimon @ 2008-10-15 10:53 UTC (permalink / raw)
  To: gdb




 Most often this is the result of libodbcinst.so being compiled
> with 'gcc -g -O2'. Compiler has optimized the variable out.
> 
This indeed seems to be the problem - I re-compiled libodbcinst.so without
-O and now I can see the symbols!

-- 
View this message in context: http://www.nabble.com/gdb---loading-symbols-of-shared-library-tp19941465p19991123.html
Sent from the Sourceware - gdb list mailing list archive at Nabble.com.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-10-15 10:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-12 12:58 gdb - loading symbols of shared library rimon
2008-10-12 15:36 ` Paul Pluzhnikov
2008-10-15 10:53   ` rimon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox