3

I'm trying to use gdb to debug a shared library

when stepping into the function in the shared library I've started getting <optimized out> for all the local variables (written in C)

I've tried linking to a shared library (.so) linking to a static library (.a) making sure no optimisations are set in the Makefiles, i.e. -O0 and -g is set for both the library and the library harness

The strange thing I was able to debug it previously, <optimized out> has only appeared recently but I have no idea why, e.g. I was able to see the local variable originally

I know this is a vague question and theres all sorts of further info I may need to provide to sort it, e.g. Makefiles, source code etc. but possibly someone recognises the problem from this high level description and can offer a potential fix?

1 Answer 1

5

only appeared recently but I have no idea why

The <optimized out> can only appear when you debug optimized code.

Since you've verified that no -O* flags are present in your compile lines (don't just look in the Makefile, examine the actual compile log), the logical conclusion is that someone installed a different (optimized) version of your library somewhere else on the system, and that you are linking to that version.

On Linux (and many other UNIX systems) you can add -Wl,-t flag to your link line, and see which library is actually used at link time.

When using a shared library, GDB info shared command will tell you which library is picked up at runtime.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.