TestTargetCommand.py revision 6c49bf469d8b43eaab76a43f7a17ac6137a0380c
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)""" 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)Test some target commands: create, list, select, variable. 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)""" 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import unittest2 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import lldb 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import sys 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)from lldbtest import * 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class targetCommandTestCase(TestBase): 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mydir = os.path.join("functionalities", "target_command") 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) def setUp(self): 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # Call super's setUp(). 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestBase.setUp(self) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # Find the line numbers for our breakpoints. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.line_b = line_number('b.c', '// Set break point at this line.') 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.line_c = line_number('c.c', '// Set break point at this line.') 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) def test_target_command_with_dwarf(self): 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) """Test some target commands: create, list, select.""" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) da = {'C_SOURCES': 'a.c', 'EXE': 'a.out'} 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.buildDwarf(dictionary=da) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.addTearDownCleanup(dictionary=da) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) db = {'C_SOURCES': 'b.c', 'EXE': 'b.out'} 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.buildDwarf(dictionary=db) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.addTearDownCleanup(dictionary=db) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dc = {'C_SOURCES': 'c.c', 'EXE': 'c.out'} 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.buildDwarf(dictionary=dc) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.addTearDownCleanup(dictionary=dc) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.do_target_command() 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # rdar://problem/9763907 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # 'target variable' command fails if the target program has been run 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) def test_target_variable_command_with_dsym(self): 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) """Test 'target variable' command before and after starting the inferior.""" 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) d = {'C_SOURCES': 'globals.c', 'EXE': 'globals'} 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.buildDsym(dictionary=d) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.addTearDownCleanup(dictionary=d) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.do_target_variable_command('globals') 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) def test_target_variable_command_with_dsym_no_fail(self): 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) """Test 'target variable' command before and after starting the inferior.""" 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) d = {'C_SOURCES': 'globals.c', 'EXE': 'globals'} 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.buildDsym(dictionary=d) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.addTearDownCleanup(dictionary=d) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.do_target_variable_command_no_fail('globals') 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) def do_target_command(self): 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) """Exercise 'target create', 'target list', 'target select' commands.""" 59b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) exe_a = os.path.join(os.getcwd(), "a.out") 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) exe_b = os.path.join(os.getcwd(), "b.out") 61b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) exe_c = os.path.join(os.getcwd(), "c.out") 62b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("target list") 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) output = self.res.GetOutput() 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if output.startswith("No targets"): 66b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) # We start from index 0. 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base = 0 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else: 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # Find the largest index of the existing list. 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) import re 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pattern = re.compile("target #(\d+):") 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for line in reversed(output.split(os.linesep)): 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) match = pattern.search(line) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if match: 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # We will start from (index + 1) .... 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base = int(match.group(1), 10) + 1 77b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) #print "base is:", base 78b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) break; 79b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("target create " + exe_a, CURRENT_EXECUTABLE_SET) 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("run", RUN_SUCCEEDED) 82b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 83b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) self.runCmd("target create " + exe_b, CURRENT_EXECUTABLE_SET) 84b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) self.runCmd("breakpoint set -f %s -l %d" % ('b.c', self.line_b), 85b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) BREAKPOINT_CREATED) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("run", RUN_SUCCEEDED) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("target create " + exe_c, CURRENT_EXECUTABLE_SET) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("breakpoint set -f %s -l %d" % ('c.c', self.line_c), 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BREAKPOINT_CREATED) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("run", RUN_SUCCEEDED) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("target list") 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("target select %d" % base) 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("thread backtrace") 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("target select %d" % (base + 2)) 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) substrs = ['c.c:%d' % self.line_c, 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 'stop reason = breakpoint']) 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.runCmd("target select %d" % (base + 1)) 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['b.c:%d' % self.line_b, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'stop reason = breakpoint']) 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("target list") 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) def do_target_variable_command(self, exe_name): 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) """Exercise 'target variable' command before and after starting the inferior.""" 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("file " + exe_name, CURRENT_EXECUTABLE_SET) 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_char", VARIABLES_DISPLAYED_CORRECTLY, 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ["my_global_char", "'X'"]) 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_global_str', '"abc"']) 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_static_int", VARIABLES_DISPLAYED_CORRECTLY, 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_static_int', '228']) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str_ptr", matching=False, 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['"abc"']) 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str_ptr", matching=True, 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) substrs = ['"abc"']) 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.expect("target variable *my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) substrs = ['a']) 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("b main") 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("run") 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_global_str', '"abc"']) 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.expect("target variable my_static_int", VARIABLES_DISPLAYED_CORRECTLY, 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) substrs = ['my_static_int', '228']) 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.expect("target variable my_global_str_ptr", matching=False, 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) substrs = ['"abc"']) 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str_ptr", matching=True, 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['"abc"']) 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['a']) 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.expect("target variable my_global_char", VARIABLES_DISPLAYED_CORRECTLY, 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) substrs = ["my_global_char", "'X'"]) 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("c") 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # rdar://problem/9763907 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # 'target variable' command fails if the target program has been run 147b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) self.expect("target variable my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_global_str', '"abc"']) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_static_int", VARIABLES_DISPLAYED_CORRECTLY, 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_static_int', '228']) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str_ptr", matching=False, 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) substrs = ['"abc"']) 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str_ptr", matching=True, 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['"abc"']) 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['a']) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_char", VARIABLES_DISPLAYED_CORRECTLY, 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ["my_global_char", "'X'"]) 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) def do_target_variable_command_no_fail(self, exe_name): 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) """Exercise 'target variable' command before and after starting the inferior.""" 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.runCmd("file " + exe_name, CURRENT_EXECUTABLE_SET) 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_char", VARIABLES_DISPLAYED_CORRECTLY, 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ["my_global_char", "'X'"]) 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_global_str', '"abc"']) 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_static_int", VARIABLES_DISPLAYED_CORRECTLY, 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_static_int', '228']) 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str_ptr", matching=False, 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['"abc"']) 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str_ptr", matching=True, 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['"abc"']) 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['a']) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("b main") 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.runCmd("run") 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # New feature: you don't need to specify the variable(s) to 'target vaiable'. 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # It will find all the global and static variables in the current compile unit. 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable", 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_global_char', 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'my_global_str', 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'my_global_str_ptr', 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'my_static_int']) 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_global_str', '"abc"']) 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_static_int", VARIABLES_DISPLAYED_CORRECTLY, 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['my_static_int', '228']) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_str_ptr", matching=False, 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['"abc"']) 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str_ptr", matching=True, 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['"abc"']) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable *my_global_str", VARIABLES_DISPLAYED_CORRECTLY, 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ['a']) 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self.expect("target variable my_global_char", VARIABLES_DISPLAYED_CORRECTLY, 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) substrs = ["my_global_char", "'X'"]) 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if __name__ == '__main__': 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) import atexit 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) lldb.SBDebugger.Initialize() 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) atexit.register(lambda: lldb.SBDebugger.Terminate()) 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unittest2.main() 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)