If a breakpoint gets deleted, any SBBreakpoints representing that

breakpoint should return false from IsValid.

llvm-svn: 212206
This commit is contained in:
Jim Ingham 2014-07-02 18:44:43 +00:00
parent 9408f5282e
commit e029fa5781
4 changed files with 90 additions and 1 deletions

View File

@ -138,7 +138,12 @@ SBBreakpoint::GetID () const
bool
SBBreakpoint::IsValid() const
{
return (bool) m_opaque_sp;
if (!m_opaque_sp)
return false;
else if (m_opaque_sp->GetTarget().GetBreakpointByID(m_opaque_sp->GetID()))
return true;
else
return false;
}
void

View File

@ -0,0 +1,5 @@
LEVEL = ../../make
C_SOURCES := main.c
include $(LEVEL)/Makefile.rules

View File

@ -0,0 +1,65 @@
"""
Test SBBreakpoint APIs.
"""
import os, time
import re
import unittest2
import lldb, lldbutil
from lldbtest import *
class BreakpointAPITestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
@python_api_test
@dsym_test
def test_breakpoint_is_valid_with_dsym(self):
"""Make sure that if an SBBreakpoint gets deleted its IsValid returns false."""
self.buildDsym()
self.breakpoint_is_valid()
@python_api_test
@dwarf_test
def test_breakpoint_is_valid_with_dwarf(self):
"""Make sure that if an SBBreakpoint gets deleted its IsValid returns false."""
self.buildDwarf()
self.breakpoint_is_valid ()
def setUp(self):
# Call super's setUp().
TestBase.setUp(self)
def breakpoint_is_valid(self):
"""Get an SBBreakpoint object, delete it from the target and make sure it is no longer valid."""
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)
# Now delete it:
did_delete = target.BreakpointDelete(breakpoint.GetID())
self.assertTrue (did_delete, "Did delete the breakpoint we just created.")
# Make sure we can't find it:
del_bkpt = target.FindBreakpointByID (breakpoint.GetID())
self.assertTrue (not del_bkpt, "We did delete the breakpoint.")
# Finally make sure the original breakpoint is no longer valid.
self.assertTrue (not breakpoint, "Breakpoint we deleted is no longer valid.")
if __name__ == '__main__':
import atexit
lldb.SBDebugger.Initialize()
atexit.register(lambda: lldb.SBDebugger.Terminate())
unittest2.main()

View File

@ -0,0 +1,14 @@
#include <stdio.h>
void
AFunction()
{
printf ("I am a function.\n");
}
int
main ()
{
AFunction();
return 0;
}