| """ |
| Test setting a breakpoint on an overloaded function by name. |
| """ |
| |
| import re |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestBreakpointOnOverload(TestBase): |
| def check_breakpoint(self, name): |
| bkpt = self.target.BreakpointCreateByName(name) |
| self.assertEqual(bkpt.num_locations, 1, "Got one location") |
| addr = bkpt.locations[0].GetAddress() |
| self.assertTrue(addr.function.IsValid(), "Got a real function") |
| # On Window, the name of the function includes the return value. |
| # We still succeed in setting the breakpoint, but the resultant |
| # name is not the same. |
| # So just look for the name we used for the breakpoint in the |
| # function name, rather than doing an equality check. |
| self.assertIn(name, addr.function.name, "Got the right name") |
| |
| def test_break_on_overload(self): |
| self.build() |
| self.target = lldbutil.run_to_breakpoint_make_target(self) |
| self.check_breakpoint("a_function(int)") |
| self.check_breakpoint("a_function(double)") |
| self.check_breakpoint("a_function(int, double)") |
| self.check_breakpoint("a_function(double, int)") |