TestPrintfAfterUp.py revision 86fbeeb94ad5b587dfce9a958b3861589831bbe8
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 *
986fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
1086fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenclass Radar9531204TestCase(TestBase):
1186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
1286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen    mydir = os.path.join("expression_command", "radar_9531204")
1386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
1486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen    # rdar://problem/9531204
1586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen    @unittest2.expectedFailure
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
2286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        self.expect("breakpoint set -n foo",
2386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen                    BREAKPOINT_CREATED,
2486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen            startstr = "Breakpoint created: 1: name = 'foo', locations = 1")
2586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
2686fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        self.runCmd("run", RUN_SUCCEEDED)
2786fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
2886fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        self.runCmd("frame variable")
2986fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
3086fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        # This works fine.
3186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        self.runCmd('expression (int)printf("value is: %d.\\n", value);')
3286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
3386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        # rdar://problem/9531204
3486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        # "Error dematerializing struct" error when evaluating expressions "up" on the stack
3586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        self.runCmd('up') # frame select -r 1
3686fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
3786fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        self.runCmd("frame variable")
3886fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
3986fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        # This does not currently.
4086fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen        self.runCmd('expression (int)printf("argc is: %d.\\n", argc)')
4186fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
4286fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen
4386fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chenif __name__ == '__main__':
4486fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen    import atexit
4586fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen    lldb.SBDebugger.Initialize()
4686fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen    atexit.register(lambda: lldb.SBDebugger.Terminate())
4786fbeeb94ad5b587dfce9a958b3861589831bbe8Johnny Chen    unittest2.main()
48