Hi Pavel,

thanks for your quick reply. I am currently using a release build, so it may take a moment until I can step through there. I'll report back as soon as possible (my masters thesis somehow depends on that ;) ).

I was just about to implement an addon for the API tonight, when I found SBDebugger::HandleCommand("target symbols add ..."). Yeah, it's a little weird way of using an API, and it's a one way command with stdout as reply channel, but it works ^^

Cheers,
Stefan


On 05/09/2016 10:22 AM, Pavel Labath wrote:
Hi Stefan,

what you are describing should work out of the box, so the fact that
you are having to add the symbols manually is a bug. I haven't tried
it with the apache binary specifically, but lldb can certainly find
external debug symbols for libc (definitely on ubuntu 14.04, as that's
what I use). We need to figure out what is different in your case. The
most important function here is SymbolVendorELF::CreateInstance. Could
you step through that function, and see why it fails to find the file?

On 7 May 2016 at 19:45, Stefan Kratochwil via lldb-dev
<lldb-dev@lists.llvm.org> wrote:
Hi,

I need to gather information about variables on the stack frames of a given
program, lets say apache2 (httpd), using the C++ flavour of the lldb
scripting bridge.

Now, if I attach to the corresponding process id, lldb does not find any
debug symbols, although I have installed the debug symbols package for
apache2 (apache2-dbg).

If I use the lldb cli, I have to use
'target symbols load /usr/lib/debug/usr/sbin/apache2'
(or any other path under /usr/lib/debug, depending on the stack frame /
module I am currently looking at) to load the corresponding debug symbols.

However, if I try the same with gdb, then it automagically uses the binaries
under /usr/lib/debug (the non-stripped binaries from any *-dbg package are
located here) for symbolification.


Now, there are two questions for me:

1.: Is there a way to let lldb automagically load debug symbols from
/usr/lib/debug, if there are any?

2.: If not, how can I do this manually using the C++ API?
The SBTarget class does not have suitable methods for this - the closest
thing is SBTarget#AddModule(), but this gives me a _new_ module, instead of
associating a symbolfile with an existing one. The code path of
CommandObjectTarget.cpp#AddModuleSymbols() seems not to be reflected in the
scripting bridge, or at least I haven't found it yet.

You can use SBDebugger::HandleCommand to execute any command which
does have an API equivalent. It's not ideal, but it works. :)

cheers,
pl

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to