diff options
author | Pavel Labath <labath@google.com> | 2017-02-27 11:05:34 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2017-02-27 11:05:34 +0000 |
commit | 6ac8403430c33aebdd88e5fa41921bc65265d180 (patch) | |
tree | 833b11ce72ddb5356ba62cea361ce68fb8e98ffe /lldb/packages/Python/lldbsuite/test/python_api | |
parent | 6d171006f4a236cb417834f16ddff838433b7c46 (diff) | |
download | bcm5719-llvm-6ac8403430c33aebdd88e5fa41921bc65265d180.tar.gz bcm5719-llvm-6ac8403430c33aebdd88e5fa41921bc65265d180.zip |
Switch SBBreakpoint to storing a weak_ptr of the internal breakpoint object
Summary:
There is nothing we can do with the breakpoint once the associated
target becomes deleted. This will make sure we don't hold on to more
resources than we need in this case. In particular, this fixes the case
TestStepOverBreakpoint on windows, where a lingering SBBreakpoint object
causes us to nor unmap the executable file from memory.
Reviewers: clayborg, jingham
Subscribers: lldb-commits
Differential Revision: https://reviews.llvm.org/D30249
llvm-svn: 296328
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py index 39975632dcb..a5bf5db1736 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py @@ -17,6 +17,7 @@ from lldbsuite.test import lldbutil class BreakpointAPITestCase(TestBase): mydir = TestBase.compute_mydir(__file__) + NO_DEBUG_INFO_TESTCASE = True @add_test_categories(['pyapi']) def test_breakpoint_is_valid(self): @@ -49,3 +50,25 @@ class BreakpointAPITestCase(TestBase): self.assertTrue( not breakpoint, "Breakpoint we deleted is no longer valid.") + + @add_test_categories(['pyapi']) + def test_target_delete(self): + """Make sure that if an SBTarget gets deleted the associated + Breakpoint's IsValid returns false.""" + + self.build() + exe = os.path.join(os.getcwd(), "a.out") + + # Create a target by the debugger. + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + + # Now create a breakpoint on main.c by name 'AFunction'. + breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') + #print("breakpoint:", breakpoint) + self.assertTrue(breakpoint and + breakpoint.GetNumLocations() == 1, + VALID_BREAKPOINT) + + self.assertTrue(self.dbg.DeleteTarget(target)) + self.assertFalse(breakpoint.IsValid()) |