<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Apr 22, 2014 at 9:02 PM,  <span dir="ltr"><<a href="mailto:jingham@apple.com" target="_blank">jingham@apple.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">lldb will take care of this for you.  When the dylib that contains the file & line or name you specified gets loaded, the dynamic loader plugin notifies the breakpoints that some modules have been added and those modules will be searched for new breakpoint matches.<br>


<br></blockquote><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">​I figured that this is done automatically, this is why I decided to ask before re-inventing the wheel...</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

​</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Note that this means that if you did a breakpoint by name, it could start out with some number of "breakpoint locations" but that number can grow or shrink over time as libraries get loaded or unloaded.<br>
<br>
If you listen to the eBroadcastBitBreakpointChanged bit on the SBTarget, you will get notified when this happens and can update your UI accordingly.<br></blockquote><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">

Is there an example of how to do this? (pseudo code, python, c++ anything ;)</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">​</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>
Jim<br>
<div><div class="h5"><br>
On Apr 22, 2014, at 10:54 AM, Eran Ifrah <<a href="mailto:eran.ifrah@gmail.com">eran.ifrah@gmail.com</a>> wrote:<br>
<br>
> Hi,<br>
><br>
> While experimenting with my new lldb plugin, I placed a breakpoint inside a shared object (using file:line / name ) which is loaded via 'dlopen'<br>
><br>
> My stratey so far for breakpoints was:<br>
><br>
> - Create debugger<br>
> - Create the target<br>
> - Launch target with the flag 'lldb::eLaunchFlagStopAtEntry'<br>
> - When stopped on first entry, all breakpoints are being applied using m_target.BreakpointCreateByName / BreakpointCreateByLocation<br>
> - The plugin then queries lldb to get a complete list of breakpoints andupdate the UI (some breakpoint are resolved to multiple locations, moved if they were placed on a comment etc) like this:<br>
><br>
> int num = m_target.GetNumBreakpoints();<br>
> for(int i=0; i<num; ++i) {<br>
>         lldb::SBBreakpoint bp = m_target.GetBreakpointAtIndex(i);<br>
> ...<br>
> }<br>
><br>
> At this point, I can see that the breakpoints I have applied in the shared libraries were not applied. So my question is:<br>
> Who should be responsible for the "pending" breakpoints? Is it done automatically by lldb? or should I keep a list of un-applied breakpoints and try to re-apply them later on?<br>
><br>
> If the later is the case, can the plugin be notified when a shared library is loaded? (this seems like a good candidate for trying to re-apply pending breakpoints)<br>
><br>
> Thanks,<br>
><br>
> --<br>
> Eran Ifrah<br>
> Author of codelite, a cross platform open source C/C++ IDE: <a href="http://www.codelite.org" target="_blank">http://www.codelite.org</a><br>
> wxCrafter, a wxWidgets RAD: <a href="http://wxcrafter.codelite.org" target="_blank">http://wxcrafter.codelite.org</a><br>
</div></div>> _______________________________________________<br>
> lldb-dev mailing list<br>
> <a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Eran Ifrah<br>Author of codelite, a cross platform open source C/C++ IDE: <a href="http://www.codelite.org" target="_blank">http://www.codelite.org</a><br>

<div>wxCrafter, a wxWidgets RAD: http://<a href="http://wxcrafter.codelite.org" target="_blank">wxcrafter.codelite.org</a></div></div>
</div></div>