1%feature("docstring",
2"Represents a logical breakpoint and its associated settings.
3
4For example (from test/functionalities/breakpoint/breakpoint_ignore_count/
5TestBreakpointIgnoreCount.py),::
6
7    def breakpoint_ignore_count_python(self):
8        '''Use Python APIs to set breakpoint ignore count.'''
9        exe = os.path.join(os.getcwd(), 'a.out')
10
11        # Create a target by the debugger.
12        target = self.dbg.CreateTarget(exe)
13        self.assertTrue(target, VALID_TARGET)
14
15        # Now create a breakpoint on main.c by name 'c'.
16        breakpoint = target.BreakpointCreateByName('c', 'a.out')
17        self.assertTrue(breakpoint and
18                        breakpoint.GetNumLocations() == 1,
19                        VALID_BREAKPOINT)
20
21        # Get the breakpoint location from breakpoint after we verified that,
22        # indeed, it has one location.
23        location = breakpoint.GetLocationAtIndex(0)
24        self.assertTrue(location and
25                        location.IsEnabled(),
26                        VALID_BREAKPOINT_LOCATION)
27
28        # Set the ignore count on the breakpoint location.
29        location.SetIgnoreCount(2)
30        self.assertTrue(location.GetIgnoreCount() == 2,
31                        'SetIgnoreCount() works correctly')
32
33        # Now launch the process, and do not stop at entry point.
34        process = target.LaunchSimple(None, None, os.getcwd())
35        self.assertTrue(process, PROCESS_IS_VALID)
36
37        # Frame#0 should be on main.c:37, frame#1 should be on main.c:25, and
38        # frame#2 should be on main.c:48.
39        #lldbutil.print_stacktraces(process)
40        from lldbutil import get_stopped_thread
41        thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint)
42        self.assertTrue(thread != None, 'There should be a thread stopped due to breakpoint')
43        frame0 = thread.GetFrameAtIndex(0)
44        frame1 = thread.GetFrameAtIndex(1)
45        frame2 = thread.GetFrameAtIndex(2)
46        self.assertTrue(frame0.GetLineEntry().GetLine() == self.line1 and
47                        frame1.GetLineEntry().GetLine() == self.line3 and
48                        frame2.GetLineEntry().GetLine() == self.line4,
49                        STOPPED_DUE_TO_BREAKPOINT_IGNORE_COUNT)
50
51        # The hit count for the breakpoint should be 3.
52        self.assertTrue(breakpoint.GetHitCount() == 3)
53
54        process.Continue()
55
56SBBreakpoint supports breakpoint location iteration, for example,::
57
58    for bl in breakpoint:
59        print('breakpoint location load addr: %s' % hex(bl.GetLoadAddress()))
60        print('breakpoint location condition: %s' % hex(bl.GetCondition()))
61
62and rich comparison methods which allow the API program to use,::
63
64    if aBreakpoint == bBreakpoint:
65        ...
66
67to compare two breakpoints for equality."
68) lldb::SBBreakpoint;
69
70%feature("docstring", "
71    The breakpoint stops only if the condition expression evaluates to true."
72) lldb::SBBreakpoint::SetCondition;
73
74%feature("docstring", "
75    Get the condition expression for the breakpoint."
76) lldb::SBBreakpoint::GetCondition;
77
78%feature("docstring", "
79    Set the name of the script function to be called when the breakpoint is hit."
80) lldb::SBBreakpoint::SetScriptCallbackFunction;
81
82%feature("docstring", "
83    Set the name of the script function to be called when the breakpoint is hit.
84    To use this variant, the function should take (frame, bp_loc, extra_args, internal_dict) and
85    when the breakpoint is hit the extra_args will be passed to the callback function."
86) lldb::SBBreakpoint::SetScriptCallbackFunction;
87
88%feature("docstring", "
89    Provide the body for the script function to be called when the breakpoint is hit.
90    The body will be wrapped in a function, which be passed two arguments:
91    'frame' - which holds the bottom-most SBFrame of the thread that hit the breakpoint
92    'bpno'  - which is the SBBreakpointLocation to which the callback was attached.
93
94    The error parameter is currently ignored, but will at some point hold the Python
95    compilation diagnostics.
96    Returns true if the body compiles successfully, false if not."
97) lldb::SBBreakpoint::SetScriptCallbackBody;
98
99
100%feature("docstring",
101"Represents a list of :py:class:`SBBreakpoint`."
102) lldb::SBBreakpointList;
103