186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen""" 286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny ChenThe evaluating printf(...) after break stop and then up a stack frame. 386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen""" 486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenimport os, time 686fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenimport unittest2 786fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenimport lldb 886fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenfrom lldbtest import * 9431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Inghamimport lldbutil 1086fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 1186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenclass Radar9531204TestCase(TestBase): 1286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 1386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen mydir = os.path.join("expression_command", "radar_9531204") 1486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 1586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen # rdar://problem/9531204 1686fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen def test_expr_commands(self): 1786fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen """The evaluating printf(...) after break stop and then up a stack frame.""" 1886fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.buildDefault() 1986fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 2086fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) 2186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 22431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham lldbutil.run_break_set_by_symbol (self, 'foo', sym_exact=True, num_expected_locations=1) 2386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 2486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.runCmd("run", RUN_SUCCEEDED) 2586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 2686fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.runCmd("frame variable") 2786fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 2886fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen # This works fine. 2986fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.runCmd('expression (int)printf("value is: %d.\\n", value);') 3086fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 3186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen # rdar://problem/9531204 3286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen # "Error dematerializing struct" error when evaluating expressions "up" on the stack 3386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.runCmd('up') # frame select -r 1 3486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 3586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.runCmd("frame variable") 3686fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 3786fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen # This does not currently. 3886fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen self.runCmd('expression (int)printf("argc is: %d.\\n", argc)') 3986fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 4086fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen 4186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenif __name__ == '__main__': 4286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen import atexit 4386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen lldb.SBDebugger.Initialize() 4486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen atexit.register(lambda: lldb.SBDebugger.Terminate()) 4586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen unittest2.main() 46