| """ |
| Test some lldb command abbreviations. |
| """ |
| from __future__ import print_function |
| |
| |
| import lldb |
| import os |
| import time |
| import lldbsuite.support.seven as seven |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class FatArchiveTestCase(TestBase): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| |
| NO_DEBUG_INFO_TESTCASE = True |
| |
| @skipUnlessDarwin |
| def test_breakpoint_resolution_dwarf(self): |
| if self.getArchitecture() == 'x86_64': |
| self.build() |
| self.main() |
| else: |
| self.skipTest( |
| "This test requires x86_64 as the architecture for the inferior") |
| |
| def main(self): |
| '''This test compiles a quick example by making a fat file (universal) full of |
| skinny .o files and makes sure we can use them to resolve breakpoints when doing |
| DWARF in .o file debugging. The only thing this test needs to do is to compile and |
| set a breakpoint in the target and verify any breakpoint locations have valid debug |
| info for the function, and source file and line.''' |
| exe = self.getBuildArtifact("a.out") |
| |
| # Create the target |
| target = self.dbg.CreateTarget(exe) |
| |
| # Create a breakpoint by name |
| breakpoint = target.BreakpointCreateByName('foo', exe) |
| self.assertTrue(breakpoint, VALID_BREAKPOINT) |
| |
| # Make sure the breakpoint resolves to a function, file and line |
| for bp_loc in breakpoint: |
| # Get a section offset address (lldb.SBAddress) from the breakpoint |
| # location |
| bp_loc_addr = bp_loc.GetAddress() |
| line_entry = bp_loc_addr.GetLineEntry() |
| function = bp_loc_addr.GetFunction() |
| self.assertTrue( |
| function.IsValid(), |
| "Verify breakpoint in fat BSD archive has valid function debug info") |
| self.assertTrue( |
| line_entry.GetFileSpec(), |
| "Verify breakpoint in fat BSD archive has source file information") |
| self.assertTrue( |
| line_entry.GetLine() != 0, |
| "Verify breakpoint in fat BSD archive has source line information") |