File: TestBreakpointAPI.lua

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,998,492 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (52 lines) | stat: -rw-r--r-- 2,105 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
_T = require('lua_lldb_test').create_test('TestBreakpointAPI')

function _T:TestBreakpointIsValid()
    local target = self:create_target()
    local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out')
    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
    local did_delete = target:BreakpointDelete(breakpoint:GetID())
    assertTrue(did_delete)
    local del_bkpt = target:FindBreakpointByID(breakpoint:GetID())
    assertFalse(del_bkpt:IsValid())
    assertFalse(breakpoint:IsValid())
end

function _T:TestTargetDelete()
    local target = self:create_target()
    local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out')
    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
    local location = breakpoint:GetLocationAtIndex(0)
    assertTrue(location:IsValid())
    assertEqual(target, breakpoint:GetTarget())
    assertTrue(self.debugger:DeleteTarget(target))
    assertFalse(breakpoint:IsValid())
    assertFalse(location:IsValid())
end

function _T:TestBreakpointHitCount()
    local target = self:create_target()
    local breakpoint = target:BreakpointCreateByName('BFunction', 'a.out')
    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
    breakpoint:SetAutoContinue(true)
    target:LaunchSimple(nil, nil, nil)
    assertEqual(breakpoint:GetHitCount(), 100)
end

function _T:TestBreakpointFrame()
    local target = self:create_target()
    local breakpoint = target:BreakpointCreateByName('main', 'a.out')
    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
    local process = target:LaunchSimple({ 'arg1', 'arg2' }, nil, nil)
    local thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint)
    assertNotNil(thread)
    assertTrue(thread:IsValid())
    local frame = thread:GetFrameAtIndex(0)
    assertTrue(frame:IsValid())
    local error = lldb.SBError()
    local var_argc = frame:FindVariable('argc')
    local var_argc_value = var_argc:GetValueAsSigned(error, 0)
    assertTrue(error:Success())
    assertEqual(var_argc_value, 3)
end

os.exit(_T:run())