1*67f94e5aSSiger Yang_T = require('lua_lldb_test').create_test('TestBreakpointAPI') 2*67f94e5aSSiger Yang 3*67f94e5aSSiger Yangfunction _T:TestBreakpointIsValid() 4*67f94e5aSSiger Yang local target = self:create_target() 5*67f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out') 6*67f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 7*67f94e5aSSiger Yang local did_delete = target:BreakpointDelete(breakpoint:GetID()) 8*67f94e5aSSiger Yang assertTrue(did_delete) 9*67f94e5aSSiger Yang local del_bkpt = target:FindBreakpointByID(breakpoint:GetID()) 10*67f94e5aSSiger Yang assertFalse(del_bkpt:IsValid()) 11*67f94e5aSSiger Yang assertFalse(breakpoint:IsValid()) 12*67f94e5aSSiger Yangend 13*67f94e5aSSiger Yang 14*67f94e5aSSiger Yangfunction _T:TestTargetDelete() 15*67f94e5aSSiger Yang local target = self:create_target() 16*67f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out') 17*67f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 18*67f94e5aSSiger Yang local location = breakpoint:GetLocationAtIndex(0) 19*67f94e5aSSiger Yang assertTrue(location:IsValid()) 20*67f94e5aSSiger Yang assertEquals(target, breakpoint:GetTarget()) 21*67f94e5aSSiger Yang assertTrue(self.debugger:DeleteTarget(target)) 22*67f94e5aSSiger Yang assertFalse(breakpoint:IsValid()) 23*67f94e5aSSiger Yang assertFalse(location:IsValid()) 24*67f94e5aSSiger Yangend 25*67f94e5aSSiger Yang 26*67f94e5aSSiger Yangfunction _T:TestBreakpointHitCount() 27*67f94e5aSSiger Yang local target = self:create_target() 28*67f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('BFunction', 'a.out') 29*67f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 30*67f94e5aSSiger Yang breakpoint:SetAutoContinue(true) 31*67f94e5aSSiger Yang target:LaunchSimple(nil, nil, nil) 32*67f94e5aSSiger Yang assertEquals(breakpoint:GetHitCount(), 100) 33*67f94e5aSSiger Yangend 34*67f94e5aSSiger Yang 35*67f94e5aSSiger Yangfunction _T:TestBreakpointFrame() 36*67f94e5aSSiger Yang local target = self:create_target() 37*67f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('main', 'a.out') 38*67f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 39*67f94e5aSSiger Yang local process = target:LaunchSimple({ 'arg1', 'arg2' }, nil, nil) 40*67f94e5aSSiger Yang local thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) 41*67f94e5aSSiger Yang assertNotNil(thread) 42*67f94e5aSSiger Yang assertTrue(thread:IsValid()) 43*67f94e5aSSiger Yang local frame = thread:GetFrameAtIndex(0) 44*67f94e5aSSiger Yang assertTrue(frame:IsValid()) 45*67f94e5aSSiger Yang local error = lldb.SBError() 46*67f94e5aSSiger Yang local var_argc = frame:FindVariable('argc') 47*67f94e5aSSiger Yang local var_argc_value = var_argc:GetValueAsSigned(error, 0) 48*67f94e5aSSiger Yang assertTrue(error:Success()) 49*67f94e5aSSiger Yang assertEquals(var_argc_value, 3) 50*67f94e5aSSiger Yangend 51*67f94e5aSSiger Yang 52*67f94e5aSSiger Yangos.exit(_T:run()) 53