[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