There isn’t necessarily A load address for an SBModule.  After all, the 
different segments could load with different offsets.  We usually list the 
offset of the __TEXT__ address as the load address - for instance in “image 
list", since if you are only interested in symbolication, that’s what you care 
about.  But there isn’t just one load address.

Jim

> On Feb 29, 2016, at 2:02 PM, Jeffrey Tan <jeffrey.fu...@gmail.com> wrote:
> 
> Btw: I did not find an API to retrieve the load address of the SBModule? This 
> seems to be weird to me, did I miss anything?
> 
> 
> On Mon, Feb 29, 2016 at 1:34 PM, Jeffrey Tan <jeffrey.fu...@gmail.com 
> <mailto:jeffrey.fu...@gmail.com>> wrote:
> 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 
> <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 
> <mailto: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 
> <mailto:jing...@apple.com>> wrote:
> 
>> On Feb 27, 2016, at 8:34 PM, Jeffrey Tan via lldb-dev 
>> <lldb-dev@lists.llvm.org <mailto: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 <mailto:lldb-dev@lists.llvm.org>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev 
>> <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