76 lines · python
1"""2Test the 'gui' shortcut 'b' (toggle breakpoint).3"""4 5import lldb6from lldbsuite.test.decorators import *7from lldbsuite.test.lldbtest import *8from lldbsuite.test.lldbpexpect import PExpectTest9 10 11class TestGuiBasicDebugCommandTest(PExpectTest):12 # PExpect uses many timeouts internally and doesn't play well13 # under ASAN on a loaded machine..14 @skipIfAsan15 @skipIfCursesSupportMissing16 @skipIf(oslist=["linux"], archs=["arm$", "aarch64"])17 def test_gui(self):18 self.build()19 20 self.launch(executable=self.getBuildArtifact("a.out"), dimensions=(100, 500))21 self.expect(22 'br set -o true -f main.c -p "// First break here"',23 substrs=["Breakpoint 1", "address ="],24 )25 self.expect("run", substrs=["stop reason ="])26 27 self.child.sendline("breakpoint list")28 self.child.expect_exact("No breakpoints currently set.")29 30 escape_key = chr(27).encode()31 down_key = chr(27) + "OB" # for vt100 terminal (lldbexpect sets TERM=vt100)32 33 # Start the GUI.34 self.child.sendline("gui")35 self.child.expect_exact("Sources") # wait for gui36 37 # Go to next line, set a breakpoint.38 self.child.send(down_key)39 self.child.send("b")40 self.child.send(escape_key)41 self.expect_prompt()42 self.child.sendline("breakpoint list")43 self.child.expect("2: file = '[^']*main.c', line = 3,.*")44 self.child.sendline("gui")45 self.child.expect_exact("Sources")46 47 # Go two lines down ("gui" resets position), set a breakpoint.48 self.child.send(down_key)49 self.child.send(down_key)50 self.child.send("b")51 self.child.send(escape_key)52 self.expect_prompt()53 self.child.sendline("breakpoint list")54 self.child.expect("2: file = '[^']*main.c', line = 3,")55 self.child.expect("3: file = '[^']*main.c', line = 4,")56 self.child.sendline("gui")57 self.child.expect_exact("Sources")58 59 # Toggle both the breakpoints (remove them).60 self.child.send(down_key)61 self.child.send("b")62 self.child.send(down_key)63 self.child.send("b")64 self.child.send(escape_key)65 self.expect_prompt()66 self.child.sendline("breakpoint list")67 self.child.expect_exact("No breakpoints currently set.")68 self.child.sendline("gui")69 self.child.expect_exact("Sources")70 71 # Press escape to quit the gui72 self.child.send(escape_key)73 74 self.expect_prompt()75 self.quit()76