Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / native_client / tests / gdb / stack_trace.py
1 # -*- python -*-
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 import gdb_test
7
8
9 class StackTraceTest(gdb_test.GdbTest):
10
11   def test_stack_trace(self):
12     self.gdb.Command('break leaf_call')
13     self.gdb.ResumeAndExpectStop('continue', 'breakpoint-hit')
14     result = self.gdb.Command('-stack-list-frames 0 2')
15     self.assertEquals(result['stack'][0]['frame']['func'], 'leaf_call')
16     self.assertEquals(result['stack'][1]['frame']['func'], 'nested_calls')
17     self.assertEquals(result['stack'][2]['frame']['func'], 'main')
18
19     result = self.gdb.Command('-stack-list-arguments 1 0 1')
20     self.assertEquals(result['stack-args'][0]['frame']['args'][0]['value'], '2')
21     self.assertEquals(result['stack-args'][1]['frame']['args'][0]['value'], '1')
22     self.gdb.Command('return')
23     self.gdb.ResumeAndExpectStop('finish', 'function-finished')
24     self.assertEquals(self.gdb.Eval('global_var'), '1')
25
26
27 if __name__ == '__main__':
28   gdb_test.Main()