149d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice""" 249d5d12b7f3d8d6a0d96a3168794391142032c08Caroline TiceTest lldb breakpoint ids. 349d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice""" 449d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 549d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Ticeimport os, time 649d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Ticeimport unittest2 749d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Ticeimport lldb 849d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Ticefrom lldbtest import * 9431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Inghamimport lldbutil 1049d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 1149d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Ticeclass BreakpointIDTestCase(TestBase): 1249d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 13083e4a9b6c13eb737ca6279bbd7359e674a729a4Johnny Chen mydir = os.path.join("functionalities", "breakpoint", "breakpoint_ids") 1449d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 1549d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") 16a3ed7d834b0e0c6924ac95629e740682bbcd15baJohnny Chen @dsym_test 1749d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice def test_with_dsym (self): 1849d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice self.buildDsym () 1949d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice self.breakpoint_id_tests () 2049d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 21a3ed7d834b0e0c6924ac95629e740682bbcd15baJohnny Chen @dwarf_test 2249d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice def test_with_dwarf (self): 2349d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice self.buildDwarf () 2449d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice self.breakpoint_id_tests () 2549d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 2649d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice def breakpoint_id_tests (self): 2749d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice exe = os.path.join (os.getcwd(), "a.out") 2849d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice self.expect("file " + exe, 2949d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice patterns = [ "Current executable set to .*a.out" ]) 3049d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 31431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham 32431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham bpno = lldbutil.run_break_set_by_symbol (self, 'product', num_expected_locations=-1, sym_exact=False) 33431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham self.assertTrue (bpno == 1, "First breakpoint number is 1.") 3449d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 35431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham bpno = lldbutil.run_break_set_by_symbol (self, 'sum', num_expected_locations=-1, sym_exact=False) 36431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham self.assertTrue (bpno == 2, "Second breakpoint number is 2.") 3749d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 38431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham bpno = lldbutil.run_break_set_by_symbol (self, 'junk', num_expected_locations=0, sym_exact=False) 39431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham self.assertTrue (bpno == 3, "Third breakpoint number is 3.") 4049d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 41057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice self.expect ("breakpoint disable 1.1 - 2.2 ", 4249d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice COMMAND_FAILED_AS_EXPECTED, error = True, 4349d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice startstr = "error: Invalid range: Ranges that specify particular breakpoint locations must be within the same major breakpoint; you specified two different major breakpoints, 1 and 2.") 4449d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 45057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice self.expect ("breakpoint disable 2 - 2.2", 46057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice COMMAND_FAILED_AS_EXPECTED, error = True, 47057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice startstr = "error: Invalid breakpoint id range: Either both ends of range must specify a breakpoint location, or neither can specify a breakpoint location.") 48057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice 49057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice self.expect ("breakpoint disable 2.1 - 2", 50057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice COMMAND_FAILED_AS_EXPECTED, error = True, 51057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice startstr = "error: Invalid breakpoint id range: Either both ends of range must specify a breakpoint location, or neither can specify a breakpoint location.") 52057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice 53057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice self.expect ("breakpoint disable 2.1 - 2.2", 5449d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice startstr = "2 breakpoints disabled.") 5549d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 56057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice self.expect ("breakpoint enable 2.*", 57057f70627ce976dd7321c9df36b645ed836c9de4Caroline Tice patterns = [ ".* breakpoints enabled."] ) 5849d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 5949d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Ticeif __name__ == '__main__': 6049d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice import atexit 6149d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice lldb.SBDebugger.Initialize() 6249d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice atexit.register(lambda: lldb.SBDebugger.Terminate()) 6349d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice unittest2.main() 6449d5d12b7f3d8d6a0d96a3168794391142032c08Caroline Tice 65