[Lldb-commits] [lldb] r275336 - Added test for setting breakpoints by basename and fullname.

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Wed Jul 13 15:38:55 PDT 2016


Author: gclayton
Date: Wed Jul 13 17:38:54 2016
New Revision: 275336

URL: http://llvm.org/viewvc/llvm-project?rev=275336&view=rev
Log:
Added test for setting breakpoints by basename and fullname.

<rdar://problem/24599697> 


Modified:
    lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py

Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py?rev=275336&r1=275335&r2=275336&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py Wed Jul 13 17:38:54 2016
@@ -12,6 +12,73 @@ from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test import lldbutil
 
+class NamespaceBreakpointTestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    def test_breakpoints_func_auto(self):
+        """Test that we can set breakpoints correctly by basename to find all functions whose basename is "func"."""
+        self.build()
+
+        names = [ "func()", "func(int)", "A::B::func()", "A::func()", "A::func(int)"]
+
+        # Create a target by the debugger.
+        exe = os.path.join(os.getcwd(), "a.out")
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+        module_list = lldb.SBFileSpecList()
+        module_list.Append(lldb.SBFileSpec(exe, False))
+        cu_list = lldb.SBFileSpecList()
+        # Set a breakpoint by name "func" which should pick up all functions whose basename is "func"
+        bp = target.BreakpointCreateByName ("func", lldb.eFunctionNameTypeAuto, module_list, cu_list);
+        for bp_loc in bp:
+            name = bp_loc.GetAddress().GetFunction().GetName()
+            self.assertTrue(name in names, "make sure breakpoint locations are correct for 'func' with eFunctionNameTypeAuto")        
+
+    def test_breakpoints_func_full(self):
+        """Test that we can set breakpoints correctly by fullname to find all functions whose fully qualified name is "func"
+           (no namespaces)."""
+        self.build()
+
+        names = [ "func()", "func(int)"]
+
+        # Create a target by the debugger.
+        exe = os.path.join(os.getcwd(), "a.out")
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+        module_list = lldb.SBFileSpecList()
+        module_list.Append(lldb.SBFileSpec(exe, False))
+        cu_list = lldb.SBFileSpecList()
+
+        # Set a breakpoint by name "func" whose fullly qualified named matches "func" which 
+        # should pick up only functions whose basename is "func" and has no containing context
+        bp = target.BreakpointCreateByName ("func", lldb.eFunctionNameTypeFull, module_list, cu_list);
+        for bp_loc in bp:
+            name = bp_loc.GetAddress().GetFunction().GetName()
+            self.assertTrue(name in names, "make sure breakpoint locations are correct for 'func' with eFunctionNameTypeFull")        
+
+    def test_breakpoints_a_func_full(self):
+        """Test that we can set breakpoints correctly by fullname to find all functions whose fully qualified name is "A::func"."""
+        self.build()
+
+        names = [ "A::func()", "A::func(int)"]
+
+        # Create a target by the debugger.
+        exe = os.path.join(os.getcwd(), "a.out")
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+        module_list = lldb.SBFileSpecList()
+        module_list.Append(lldb.SBFileSpec(exe, False))
+        cu_list = lldb.SBFileSpecList()
+
+        # Set a breakpoint by name "A::func" whose fullly qualified named matches "A::func" which 
+        # should pick up only functions whose basename is "func" and is contained in the "A" namespace
+        bp = target.BreakpointCreateByName ("A::func", lldb.eFunctionNameTypeFull, module_list, cu_list);
+        for bp_loc in bp:
+            name = bp_loc.GetAddress().GetFunction().GetName()
+            self.assertTrue(name in names, "make sure breakpoint locations are correct for 'A::func' with eFunctionNameTypeFull")        
+
+
 class NamespaceTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)




More information about the lldb-commits mailing list