[Lldb-commits] [lldb] r236997 - New test for llvm.org/pr23478

Tamas Berghammer tberghammer at google.com
Mon May 11 07:42:09 PDT 2015


Author: tberghammer
Date: Mon May 11 09:42:09 2015
New Revision: 236997

URL: http://llvm.org/viewvc/llvm-project?rev=236997&view=rev
Log:
New test for llvm.org/pr23478

When there is two brekapoint on two consecutive instruction then
the second breakpoint is ignored by lldb. This test check for the
correct behaviour in this scenario.

Differential revision: http://reviews.llvm.org/D9661

Added:
    lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/
    lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/Makefile
    lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/TestConsecutiveBreakpoints.py
    lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/main.cpp

Added: lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/Makefile?rev=236997&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/Makefile (added)
+++ lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/Makefile Mon May 11 09:42:09 2015
@@ -0,0 +1,9 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+
+ifneq (,$(findstring icc,$(CC)))
+    CXXFLAGS += -debug inline-debug-info
+endif
+
+include $(LEVEL)/Makefile.rules

Added: lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/TestConsecutiveBreakpoints.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/TestConsecutiveBreakpoints.py?rev=236997&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/TestConsecutiveBreakpoints.py (added)
+++ lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/TestConsecutiveBreakpoints.py Mon May 11 09:42:09 2015
@@ -0,0 +1,78 @@
+"""
+Test continue from a breakpoint when there is a breakpoint on the next instruction also.
+"""
+
+import unittest2
+import lldb, lldbutil
+from lldbtest import *
+
+class ConsecutiveBreakpoitsTestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    @skipUnlessDarwin
+    @dsym_test
+    @unittest2.expectedFailure("llvm.org/pr23478")
+    def test_with_dsym (self):
+        self.buildDsym ()
+        self.consecutive_breakpoints_tests()
+
+    @dwarf_test
+    @unittest2.expectedFailure("llvm.org/pr23478")
+    def test_with_dwarf (self):
+        self.buildDwarf ()
+        self.consecutive_breakpoints_tests()
+
+    def consecutive_breakpoints_tests(self):
+        exe = os.path.join (os.getcwd(), "a.out")
+
+        # Create a target by the debugger.
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+
+        breakpoint = target.BreakpointCreateBySourceRegex("Set breakpoint here", lldb.SBFileSpec("main.cpp"))
+        self.assertTrue(breakpoint and
+                        breakpoint.GetNumLocations() == 1,
+                        VALID_BREAKPOINT)
+
+        # Now launch the process, and do not stop at entry point.
+        process = target.LaunchSimple (None, None, self.get_process_working_directory())
+        self.assertTrue(process, PROCESS_IS_VALID)
+
+        # We should be stopped at the first breakpoint
+        thread = process.GetThreadAtIndex(0)
+        self.assertEqual(thread.GetStopReason(), lldb.eStopReasonBreakpoint)
+
+        # Step to the next instruction
+        thread.StepInstruction(False)
+        self.assertEqual(thread.GetStopReason(), lldb.eStopReasonPlanComplete)
+        address = thread.GetFrameAtIndex(0).GetPC()
+
+        # Run the process until termination
+        process.Continue()
+
+        # Now launch the process again, and do not stop at entry point.
+        process = target.LaunchSimple (None, None, self.get_process_working_directory())
+        self.assertTrue(process, PROCESS_IS_VALID)
+
+        # We should be stopped at the first breakpoint
+        thread = process.GetThreadAtIndex(0)
+        self.assertEqual(thread.GetStopReason(), lldb.eStopReasonBreakpoint)
+
+        # Set breakpoint to the next instruction
+        target.BreakpointCreateByAddress(address)
+        process.Continue()
+
+        # We should be stopped at the second breakpoint
+        thread = process.GetThreadAtIndex(0)
+        self.assertEqual(thread.GetStopReason(), lldb.eStopReasonBreakpoint)
+
+        # Run the process until termination
+        process.Continue()
+
+if __name__ == '__main__':
+    import atexit
+    lldb.SBDebugger.Initialize()
+    atexit.register(lambda: lldb.SBDebugger.Terminate())
+    unittest2.main()
+

Added: lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/main.cpp?rev=236997&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/main.cpp (added)
+++ lldb/trunk/test/functionalities/breakpoint/consecutive_breakpoins/main.cpp Mon May 11 09:42:09 2015
@@ -0,0 +1,19 @@
+//===-- main.cpp ------------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+int
+main(int argc, char const *argv[])
+{
+    int a = 0;
+    int b = 1;
+    a = b + 1; // Set breakpoint here
+    b = a + 1;
+    return 0;
+}
+





More information about the lldb-commits mailing list