167f94e5aSSiger Yang_T = require('lua_lldb_test').create_test('TestBreakpointAPI') 267f94e5aSSiger Yang 367f94e5aSSiger Yangfunction _T:TestBreakpointIsValid() 467f94e5aSSiger Yang local target = self:create_target() 567f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out') 667f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 767f94e5aSSiger Yang local did_delete = target:BreakpointDelete(breakpoint:GetID()) 867f94e5aSSiger Yang assertTrue(did_delete) 967f94e5aSSiger Yang local del_bkpt = target:FindBreakpointByID(breakpoint:GetID()) 1067f94e5aSSiger Yang assertFalse(del_bkpt:IsValid()) 1167f94e5aSSiger Yang assertFalse(breakpoint:IsValid()) 1267f94e5aSSiger Yangend 1367f94e5aSSiger Yang 1467f94e5aSSiger Yangfunction _T:TestTargetDelete() 1567f94e5aSSiger Yang local target = self:create_target() 1667f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out') 1767f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 1867f94e5aSSiger Yang local location = breakpoint:GetLocationAtIndex(0) 1967f94e5aSSiger Yang assertTrue(location:IsValid()) 20*80fcecb1SJonas Devlieghere assertEqual(target, breakpoint:GetTarget()) 2167f94e5aSSiger Yang assertTrue(self.debugger:DeleteTarget(target)) 2267f94e5aSSiger Yang assertFalse(breakpoint:IsValid()) 2367f94e5aSSiger Yang assertFalse(location:IsValid()) 2467f94e5aSSiger Yangend 2567f94e5aSSiger Yang 2667f94e5aSSiger Yangfunction _T:TestBreakpointHitCount() 2767f94e5aSSiger Yang local target = self:create_target() 2867f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('BFunction', 'a.out') 2967f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 3067f94e5aSSiger Yang breakpoint:SetAutoContinue(true) 3167f94e5aSSiger Yang target:LaunchSimple(nil, nil, nil) 32*80fcecb1SJonas Devlieghere assertEqual(breakpoint:GetHitCount(), 100) 3367f94e5aSSiger Yangend 3467f94e5aSSiger Yang 3567f94e5aSSiger Yangfunction _T:TestBreakpointFrame() 3667f94e5aSSiger Yang local target = self:create_target() 3767f94e5aSSiger Yang local breakpoint = target:BreakpointCreateByName('main', 'a.out') 3867f94e5aSSiger Yang assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) 3967f94e5aSSiger Yang local process = target:LaunchSimple({ 'arg1', 'arg2' }, nil, nil) 4067f94e5aSSiger Yang local thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) 4167f94e5aSSiger Yang assertNotNil(thread) 4267f94e5aSSiger Yang assertTrue(thread:IsValid()) 4367f94e5aSSiger Yang local frame = thread:GetFrameAtIndex(0) 4467f94e5aSSiger Yang assertTrue(frame:IsValid()) 4567f94e5aSSiger Yang local error = lldb.SBError() 4667f94e5aSSiger Yang local var_argc = frame:FindVariable('argc') 4767f94e5aSSiger Yang local var_argc_value = var_argc:GetValueAsSigned(error, 0) 4867f94e5aSSiger Yang assertTrue(error:Success()) 49*80fcecb1SJonas Devlieghere assertEqual(var_argc_value, 3) 5067f94e5aSSiger Yangend 5167f94e5aSSiger Yang 5267f94e5aSSiger Yangos.exit(_T:run()) 53