xref: /llvm-project/lldb/test/API/python_api/breakpoint/TestBreakpointAPI.py (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1"""
2Test SBBreakpoint APIs.
3"""
4
5import lldb
6from lldbsuite.test.decorators import *
7from lldbsuite.test.lldbtest import *
8from lldbsuite.test import lldbutil
9
10
11class BreakpointAPITestCase(TestBase):
12
13    mydir = TestBase.compute_mydir(__file__)
14    NO_DEBUG_INFO_TESTCASE = True
15
16    @add_test_categories(['pyapi'])
17    def test_breakpoint_is_valid(self):
18        """Make sure that if an SBBreakpoint gets deleted its IsValid returns false."""
19        self.build()
20        exe = self.getBuildArtifact("a.out")
21
22        # Create a target by the debugger.
23        target = self.dbg.CreateTarget(exe)
24        self.assertTrue(target, VALID_TARGET)
25
26        # Now create a breakpoint on main.c by name 'AFunction'.
27        breakpoint = target.BreakpointCreateByName('AFunction', 'a.out')
28        #print("breakpoint:", breakpoint)
29        self.assertTrue(breakpoint and
30                        breakpoint.GetNumLocations() == 1,
31                        VALID_BREAKPOINT)
32
33        # Now delete it:
34        did_delete = target.BreakpointDelete(breakpoint.GetID())
35        self.assertTrue(
36            did_delete,
37            "Did delete the breakpoint we just created.")
38
39        # Make sure we can't find it:
40        del_bkpt = target.FindBreakpointByID(breakpoint.GetID())
41        self.assertTrue(not del_bkpt, "We did delete the breakpoint.")
42
43        # Finally make sure the original breakpoint is no longer valid.
44        self.assertTrue(
45            not breakpoint,
46            "Breakpoint we deleted is no longer valid.")
47
48    @add_test_categories(['pyapi'])
49    def test_target_delete(self):
50        """Make sure that if an SBTarget gets deleted the associated
51        Breakpoint's IsValid returns false."""
52
53        self.build()
54        exe = self.getBuildArtifact("a.out")
55
56        # Create a target by the debugger.
57        target = self.dbg.CreateTarget(exe)
58        self.assertTrue(target, VALID_TARGET)
59
60        # Now create a breakpoint on main.c by name 'AFunction'.
61        breakpoint = target.BreakpointCreateByName('AFunction', 'a.out')
62        #print("breakpoint:", breakpoint)
63        self.assertTrue(breakpoint and
64                        breakpoint.GetNumLocations() == 1,
65                        VALID_BREAKPOINT)
66        location = breakpoint.GetLocationAtIndex(0)
67        self.assertTrue(location.IsValid())
68
69        self.assertTrue(self.dbg.DeleteTarget(target))
70        self.assertFalse(breakpoint.IsValid())
71        self.assertFalse(location.IsValid())
72