xref: /llvm-project/lldb/test/API/lua_api/TestBreakpointAPI.lua (revision 80fcecb13c388ff087a27a4b0e7ca3dd8c98eaa4)
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