brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · ea3e0b7 Raw
66 lines · python
1"""2Test that inlined breakpoints (breakpoint set on a file/line included from3another source file) works correctly.4"""5 6 7import lldb8from lldbsuite.test.lldbtest import *9import lldbsuite.test.lldbutil as lldbutil10 11 12class InlinedBreakpointsTestCase(TestBase):13    """Bug fixed: rdar://problem/8464339"""14 15    def test_with_run_command(self):16        """Test 'b basic_types.cpp:176' does break (where int.cpp includes basic_type.cpp)."""17        self.build()18        self.inlined_breakpoints()19 20    def setUp(self):21        # Call super's setUp().22        TestBase.setUp(self)23        # Find the line number to break inside basic_type.cpp.24        self.line = line_number("basic_type.cpp", "// Set break point at this line.")25 26    def inlined_breakpoints(self):27        """Test 'b basic_types.cpp:176' does break (where int.cpp includes basic_type.cpp)."""28        exe = self.getBuildArtifact("a.out")29        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)30 31        # With the inline-breakpoint-strategy, our file+line breakpoint should32        # not resolve to a location.33        self.runCmd("settings set target.inline-breakpoint-strategy headers")34 35        # Set a breakpoint and fail because it is in an inlined source36        # implemenation file37        lldbutil.run_break_set_by_file_and_line(38            self, "basic_type.cpp", self.line, num_expected_locations=039        )40 41        # Now enable breakpoints in implementation files and see the breakpoint42        # set succeed43        self.runCmd("settings set target.inline-breakpoint-strategy always")44        # And add hooks to restore the settings during tearDown().45        self.addTearDownHook(46            lambda: self.runCmd("settings set target.inline-breakpoint-strategy always")47        )48 49        lldbutil.run_break_set_by_file_and_line(50            self, "basic_type.cpp", self.line, num_expected_locations=1, loc_exact=True51        )52 53        self.runCmd("run", RUN_SUCCEEDED)54 55        # The stop reason of the thread should be breakpoint.56        # And it should break at basic_type.cpp:176.57        self.expect(58            "thread list",59            STOPPED_DUE_TO_BREAKPOINT,60            substrs=[61                "stopped",62                "basic_type.cpp:%d" % self.line,63                "stop reason = breakpoint",64            ],65        )66