You can register a listener, but that is more “low-level”, i.e. it will let you 
know when the process stopped (by giving you an SBEvent), and then you can look 
around the state of your program to figure out if the stop reason is a 
breakpoint, and if so “which” breakpoint.
This is similar to what the lldb-perf TestCase class does, so you can refer to 
TestCase::Loop() for an example of how you would to that.
Unfortunately, what you get from that API is the breakpoint number, which might 
be not very informative by itself.
We discussed the option of letting you “name” breakpoints and then retrieve 
that name for situations like this, but haven’t gotten around to doing anything 
more than discussing it.
You can of course work around the issue by having a number -> name table, or by 
writing a patch for named breakpoints :-)

Enrico Granata
✉ egranata@.com
✆ 27683

On Apr 24, 2013, at 11:33 AM, "Malea, Daniel" <[email protected]> wrote:

> Thanks for the explanation Enrico, that's what I thought.
> 
> So, is it possible to use SBListener to register some callback on a 
> breakpoint hit? Or is it possible only via the C++ API or the "target 
> stop-hook" commands?
> 
> From: Enrico Granata <[email protected]<mailto:[email protected]>>
> Date: Wednesday, 24 April, 2013 2:23 PM
> To: Daniel Malea <[email protected]<mailto:[email protected]>>
> Cc: Greg Clayton <[email protected]<mailto:[email protected]>>, 
> "[email protected]<mailto:[email protected]>" 
> <[email protected]<mailto:[email protected]>>
> Subject: Re: [lldb-dev] Callback API question
> 
> I don’t think we currently supporting setting Python breakpoint callbacks 
> through the SB API
> We would need to add some code that takes a meaningful representation of a 
> Python callable, and makes a C++ thunk that knows how to call into Python and 
> get the result back to C++-land
> It’s definitely an enhancement worth considering
> 
> Enrico Granata
> ✉ egranata@.com
> ✆ 27683
> 
> On Apr 24, 2013, at 11:00 AM, "Malea, Daniel" 
> <[email protected]<mailto:[email protected]>> wrote:
> 
> Hi Greg, or whoever reads this first,
> 
> I have a question about the python API lldb.SBBreakpoint.SetCallback 
> function. According to the docs, the signature is:
> 
> SetCallback(self, *args) unbound lldb.SBBreakpoint method
>   SetCallback(self, BreakpointHitCallback callback, void baton)
> 
> However, I am not sure how to create an instance of the BreakpointHitCallback 
> type that is required for the second parameter. I'm not seeing any class in 
> the Python API that is named that; only the C++ API has a typedef of that 
> name:
> 
> typedef bool (*BreakpointHitCallback) (void *baton,
>                                      SBProcess &process,
>                                      SBThread &thread,
>                                      lldb::SBBreakpointLocation &location);
> 
> 
> I tried passing a function that has (what I believe is) the correct signature:
> 
> class MyTestCase(TestBase):
> def bp_callback(self, process, thread, breakpoint_loc):
>   Pass
> 
> def register_callback(self, target)
>   breakpoint = target.BreakpointCreateByLocation('main.c', self.line1)
>   breakpoint.SetCallback(self.bp_callback, self)
> 
> 
> But I am getting a python error:
> 
> TypeError: in method 'SBBreakpoint_SetCallback', argument 2 of type 
> 'lldb::SBBreakpoint::BreakpointHitCallback'
> 
> So, my question is: is it possible to register a callback to be called when a 
> breakpoint is hit using that function? If so, what am I doing wrong? If not, 
> is it preferable to create an SBListener for this purpose, or is the "target 
> stop-hook add" command the only way to do what I'm trying to do? I'm trying 
> to avoid using the built-in script interpreter..
> 
> 
> 
> Thanks,
> Dan
> 
> _______________________________________________
> lldb-dev mailing list
> [email protected]<mailto:[email protected]>
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to