File: test_stack_trace.py

package info (click to toggle)
drgn 0.0.33-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,892 kB
  • sloc: python: 59,081; ansic: 51,400; awk: 423; makefile: 339; sh: 113
file content (33 lines) | stat: -rw-r--r-- 1,188 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Copyright (c) Meta Platforms, Inc. and affiliates.
# SPDX-License-Identifier: LGPL-2.1-or-later

from drgn import Program
from tests import TestCase
from tests.resources import get_resource


class TestLinuxUserspaceCoreDump(TestCase):
    @classmethod
    def setUpClass(cls):
        cls.prog = Program()
        cls.prog.set_enabled_debug_info_finders([])
        cls.prog.set_core_dump(get_resource("crashme.core"))
        cls.prog.load_debug_info([get_resource("crashme"), get_resource("crashme.so")])
        cls.trace = cls.prog.crashed_thread().stack_trace()

    @classmethod
    def tearDownClass(cls):
        del cls.trace
        del cls.prog

    def test_stack_frame_name(self):
        self.assertEqual(self.trace[0].name, "c")
        self.assertEqual(self.trace[5].name, "0x7f6112ad8088")
        self.assertEqual(self.trace[7].name, "_start")
        self.assertEqual(self.trace[8].name, "???")

    def test_stack_frame_function_name(self):
        self.assertEqual(self.trace[0].function_name, "c")
        self.assertIsNone(self.trace[5].function_name)
        self.assertIsNone(self.trace[7].function_name)
        self.assertIsNone(self.trace[8].function_name)