<div dir="ltr">My assumption is that different sections of the binary will be mapped continuously in memory; and the first section(which should be a header section for the binary) will stands for the base address of the whole module. <div>Is this assumption not true for all platforms? Basically, I would like to show the memory range of the whole module, instead of just text section, so that if a debugger user got a magic address, he can quickly examine the image list to see which binary this address falls into. I guess I can calculate and combine all sections, but it is a bit cumbersome to do. </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 29, 2016 at 4:02 PM, Greg Clayton <span dir="ltr"><<a href="mailto:gclayton@apple.com" target="_blank">gclayton@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">As Jim said there really isn't just one address per module. You will want to display the address of each of the sections for a module under that module. So something like:<br>
<br>
<br>
a.out<br>
  |- .text @ 0x10000<br>
  |- .data @ 0x20000<br>
  \- .bss  @ 0x30000<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
> On Feb 29, 2016, at 2:02 PM, Jeffrey Tan <<a href="mailto:jeffrey.fudan@gmail.com">jeffrey.fudan@gmail.com</a>> wrote:<br>
><br>
> 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?<br>
><br>
><br>
> On Mon, Feb 29, 2016 at 1:34 PM, Jeffrey Tan <<a href="mailto:jeffrey.fudan@gmail.com">jeffrey.fudan@gmail.com</a>> wrote:<br>
> I see why I did not find them in the first place. These two APIs are not listed in the official doc:<br>
> <a href="http://lldb.llvm.org/python_reference/index.html" rel="noreferrer" target="_blank">http://lldb.llvm.org/python_reference/index.html</a><br>
><br>
> Someone might want to add it.<br>
><br>
> Thanks<br>
> Jeffrey<br>
><br>
> On Mon, Feb 29, 2016 at 11:59 AM, Jeffrey Tan <<a href="mailto:jeffrey.fudan@gmail.com">jeffrey.fudan@gmail.com</a>> wrote:<br>
> This is very useful, thanks for the info!<br>
><br>
> On Mon, Feb 29, 2016 at 10:36 AM, Jim Ingham <<a href="mailto:jingham@apple.com">jingham@apple.com</a>> wrote:<br>
><br>
>> On Feb 27, 2016, at 8:34 PM, Jeffrey Tan via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org">lldb-dev@lists.llvm.org</a>> wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> 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.<br>
>><br>
>> Questions:<br>
>> 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?<br>
><br>
> From SBTarget.h:<br>
><br>
>     static uint32_t<br>
>     GetNumModulesFromEvent (const lldb::SBEvent &event);<br>
><br>
>     static lldb::SBModule<br>
>     GetModuleAtIndexFromEvent (const uint32_t idx, const lldb::SBEvent &event);<br>
><br>
> Note, you can also cause the process to stop with modules are loaded with the setting:<br>
><br>
> target.process.stop-on-sharedlibrary-events<br>
><br>
> if that is more convenient for you.<br>
><br>
>><br>
>> 2. Even though "image list" shows I have around 42 modules loaded in process, I only got two module load events. Why is that?<br>
><br>
> 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.<br>
><br>
><br>
>><br>
>> 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.<br>
><br>
> 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.<br>
><br>
> Jim<br>
><br>
><br>
>><br>
>> This is tested on mac OSX lldb.<br>
>><br>
>> Jeffrey<br>
>> _______________________________________________<br>
>> lldb-dev mailing list<br>
>> <a href="mailto:lldb-dev@lists.llvm.org">lldb-dev@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br>
><br>
><br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div>