I see why I did not find them in the first place. These two APIs are not
listed in the official doc:
http://lldb.llvm.org/python_reference/index.html

Someone might want to add it.

Thanks
Jeffrey

On Mon, Feb 29, 2016 at 11:59 AM, Jeffrey Tan <jeffrey.fu...@gmail.com>
wrote:

> This is very useful, thanks for the info!
>
> On Mon, Feb 29, 2016 at 10:36 AM, Jim Ingham <jing...@apple.com> wrote:
>
>>
>> On Feb 27, 2016, at 8:34 PM, Jeffrey Tan via lldb-dev <
>> lldb-dev@lists.llvm.org> wrote:
>>
>> Hi,
>>
>> I am trying to listen for module/symbol load/unload events and display
>> them in output UI so that debugger users can have a basic clue what is
>> debugger busy doing while launching a big executable linking many shared
>> libraries.
>>
>> Questions:
>> 1. I did not find an API to get current load/unload module during module
>> events. I was expecting some static API like lldb.SBModule(or
>> SBTarget).GetModuleFromEvent(SBEvent), but this does not exists. I tried to
>> treat current PC's module as loading module in module load/unload events.
>> But that does not work too(I think because process is not stopped in module
>> load/unload events). Do I miss something here?
>>
>>
>> From SBTarget.h:
>>
>>     static uint32_t
>>     GetNumModulesFromEvent (const lldb::SBEvent &event);
>>
>>     static lldb::SBModule
>>     GetModuleAtIndexFromEvent (const uint32_t idx, const lldb::SBEvent
>> &event);
>>
>> Note, you can also cause the process to stop with modules are loaded with
>> the setting:
>>
>> target.process.stop-on-sharedlibrary-events
>>
>> if that is more convenient for you.
>>
>>
>> 2. Even though "image list" shows I have around 42 modules loaded in
>> process, I only got two module load events. Why is that?
>>
>>
>> On OS X the loader loads the closure of modules for whatever it is
>> loading, and only stops and informs the debugger when this is all done.  So
>> it is quite usual to see only a few load events even though many modules
>> get loaded.
>>
>>
>>
>> 3. Even though I added lldb.SBTarget.eBroadcastBitSymbolsLoaded, there is
>> no event of type eBroadcastBitSymbolsLoaded generated. Is it expected?
>> Apparently I have the symbols next to the binary.
>>
>>
>> That event gets sent when symbols are added to an already loaded module.
>> It is so a UI will know to refresh the backtrace, local variables, source
>> view, etc when code goes from having no symbols to having some symbols.
>> Those actions are not needed if the library & its symbols get loaded
>> simultaneously, so it isn’t sent in that case.
>>
>> Jim
>>
>>
>>
>> This is tested on mac OSX lldb.
>>
>> Jeffrey
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev@lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>
>>
>>
>
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to