1 """ 2 Test example snippets from the lldb 'help expression' output. 3 """ 4 5 import os, time 6 import unittest2 7 import lldb 8 from lldbtest import * 9 import lldbutil 10 11 class Radar9673644TestCase(TestBase): 12 13 mydir = os.path.join("expression_command", "radar_9673664") 14 15 def setUp(self): 16 # Call super's setUp(). 17 TestBase.setUp(self) 18 # Find the line number to break inside main(). 19 self.main_source = "main.c" 20 self.line = line_number(self.main_source, '// Set breakpoint here.') 21 22 # rdar://problem/9673664 23 @expectedFailureFreeBSD # llvm.org/pr16697 24 @skipIfLinux # llvm.org/pr14805: expressions that require memory allocation evaluate incorrectly on Linux 25 def test_expr_commands(self): 26 """The following expression commands should just work.""" 27 self.buildDefault() 28 29 self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) 30 31 lldbutil.run_break_set_by_file_and_line (self, self.main_source, self.line, num_expected_locations=1, loc_exact=True) 32 33 self.runCmd("run", RUN_SUCCEEDED) 34 35 # rdar://problem/9673664 lldb expression evaluation problem 36 37 self.expect('expr char c[] = "foo"; c[0]', 38 substrs = ["'f'"]) 39 # runCmd: expr char c[] = "foo"; c[0] 40 # output: (char) $0 = 'f' 41 42 43 if __name__ == '__main__': 44 import atexit 45 lldb.SBDebugger.Initialize() 46 atexit.register(lambda: lldb.SBDebugger.Terminate()) 47 unittest2.main() 48