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