56 lines · python
1"""Test breaking inside functions defined within a BSD archive file libfoo.a."""2 3 4import lldb5from lldbsuite.test.decorators import *6from lldbsuite.test.lldbtest import *7from lldbsuite.test import lldbutil8 9 10class BSDArchivesTestCase(TestBase):11 def test(self):12 """Break inside a() and b() defined within libfoo.a."""13 self.build()14 15 exe = self.getBuildArtifact("a.out")16 self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)17 18 # Break on a() and b() symbols19 lldbutil.run_break_set_by_symbol(self, "a", sym_exact=True)20 lldbutil.run_break_set_by_symbol(self, "b", sym_exact=True)21 22 self.runCmd("run", RUN_SUCCEEDED)23 24 # The stop reason of the thread should be breakpoint.25 self.expect(26 "thread list",27 STOPPED_DUE_TO_BREAKPOINT,28 substrs=["stopped", "stop reason = breakpoint"],29 )30 31 # Break at a(int) first.32 self.expect(33 "frame variable", VARIABLES_DISPLAYED_CORRECTLY, substrs=["(int) arg = 1"]34 )35 self.expect(36 "frame variable __a_global",37 VARIABLES_DISPLAYED_CORRECTLY,38 substrs=["(int) __a_global = 1"],39 )40 41 # Continue the program, we should break at b(int) next.42 self.runCmd("continue")43 self.expect(44 "thread list",45 STOPPED_DUE_TO_BREAKPOINT,46 substrs=["stopped", "stop reason = breakpoint"],47 )48 self.expect(49 "frame variable", VARIABLES_DISPLAYED_CORRECTLY, substrs=["(int) arg = 2"]50 )51 self.expect(52 "frame variable __b_global",53 VARIABLES_DISPLAYED_CORRECTLY,54 substrs=["(int) __b_global = 2"],55 )56