forked from OSchip/llvm-project
If a breakpoint gets deleted, any SBBreakpoints representing that
breakpoint should return false from IsValid. llvm-svn: 212206
This commit is contained in:
parent
9408f5282e
commit
e029fa5781
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
LEVEL = ../../make
|
||||
|
||||
C_SOURCES := main.c
|
||||
|
||||
include $(LEVEL)/Makefile.rules
|
||||
|
|
@ -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()
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
#include <stdio.h>
|
||||
|
||||
void
|
||||
AFunction()
|
||||
{
|
||||
printf ("I am a function.\n");
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
AFunction();
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue