[lldb-dev] Loading debug symbols (C++, Ubuntu 14.04)

Stefan Kratochwil via lldb-dev lldb-dev at lists.llvm.org
Mon May 9 02:00:17 PDT 2016


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 at 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
>


More information about the lldb-dev mailing list