xref: /llvm-project/lldb/test/API/python_api/breakpoint/TestBreakpointAPI.py (revision 05d7d6949c7cd3f1566d4c8394fa59160a7ffd05)
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    def test_breakpoint_is_valid(self):
17        """Make sure that if an SBBreakpoint gets deleted its IsValid returns false."""
18        self.build()
19        exe = self.getBuildArtifact("a.out")
20
21        # Create a target by the debugger.
22        target = self.dbg.CreateTarget(exe)
23        self.assertTrue(target, VALID_TARGET)
24
25        # Now create a breakpoint on main.c by name 'AFunction'.
26        breakpoint = target.BreakpointCreateByName('AFunction', 'a.out')
27        self.trace("breakpoint:", breakpoint)
28        self.assertTrue(breakpoint and
29                        breakpoint.GetNumLocations() == 1,
30                        VALID_BREAKPOINT)
31
32        # Now delete it:
33        did_delete = target.BreakpointDelete(breakpoint.GetID())
34        self.assertTrue(
35            did_delete,
36            "Did delete the breakpoint we just created.")
37
38        # Make sure we can't find it:
39        del_bkpt = target.FindBreakpointByID(breakpoint.GetID())
40        self.assertTrue(not del_bkpt, "We did delete the breakpoint.")
41
42        # Finally make sure the original breakpoint is no longer valid.
43        self.assertTrue(
44            not breakpoint,
45            "Breakpoint we deleted is no longer valid.")
46
47    def test_target_delete(self):
48        """Make sure that if an SBTarget gets deleted the associated
49        Breakpoint's IsValid returns false."""
50
51        self.build()
52        exe = self.getBuildArtifact("a.out")
53
54        # Create a target by the debugger.
55        target = self.dbg.CreateTarget(exe)
56        self.assertTrue(target, VALID_TARGET)
57
58        # Now create a breakpoint on main.c by name 'AFunction'.
59        breakpoint = target.BreakpointCreateByName('AFunction', 'a.out')
60        self.trace("breakpoint:", breakpoint)
61        self.assertTrue(breakpoint and
62                        breakpoint.GetNumLocations() == 1,
63                        VALID_BREAKPOINT)
64        location = breakpoint.GetLocationAtIndex(0)
65        self.assertTrue(location.IsValid())
66
67        # Make sure the breakpoint's target is right:
68        self.assertEqual(target, breakpoint.GetTarget(), "Breakpoint reports its target correctly")
69
70        self.assertTrue(self.dbg.DeleteTarget(target))
71        self.assertFalse(breakpoint.IsValid())
72        self.assertFalse(location.IsValid())
73