From c891d8634955ead4c84b1f8c4f011b071203c5ad Mon Sep 17 00:00:00 2001 From: Jim Ingham Date: Tue, 28 Oct 2014 00:53:20 +0000 Subject: [PATCH] Add a test for setting and hitting the C++ Exception throw breakpoint. llvm-svn: 220743 --- .../breakpoint/cpp_exception/Makefile | 5 ++ .../cpp_exception/TestCPPExceptionBreakpoint.py | 58 ++++++++++++++++++++++ .../breakpoint/cpp_exception/main.cpp | 13 +++++ 3 files changed, 76 insertions(+) create mode 100644 lldb/test/functionalities/breakpoint/cpp_exception/Makefile create mode 100644 lldb/test/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py create mode 100644 lldb/test/functionalities/breakpoint/cpp_exception/main.cpp diff --git a/lldb/test/functionalities/breakpoint/cpp_exception/Makefile b/lldb/test/functionalities/breakpoint/cpp_exception/Makefile new file mode 100644 index 0000000..314f1cb --- /dev/null +++ b/lldb/test/functionalities/breakpoint/cpp_exception/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules diff --git a/lldb/test/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py b/lldb/test/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py new file mode 100644 index 0000000..9324a59 --- /dev/null +++ b/lldb/test/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py @@ -0,0 +1,58 @@ +""" +Test that you can set breakpoint and hit the C++ language exception breakpoint +""" + +import os +import re +import unittest2 +import lldb, lldbutil +import sys +from lldbtest import * + +class TestCPPExceptionBreakpoint (TestBase): + + mydir = TestBase.compute_mydir(__file__) + my_var = 10 + + @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") + @python_api_test + @dsym_test + def test_cpp_exception_breakpoint (self): + """Test setting and hitting the C++ exception breakpoint.""" + self.buildDsym() + self.do_cpp_exception_bkpt () + + @python_api_test + @dwarf_test + def test_cpp_exception_breakpoint_with_dwarf(self): + """Test setting and hitting the C++ exception breakpoint.""" + self.buildDwarf() + self.do_cpp_exception_bkpt () + + def setUp (self): + TestBase.setUp(self) + self.main_source = "main.c" + self.main_source_spec = lldb.SBFileSpec(self.main_source) + + + def do_cpp_exception_bkpt (self): + exe = os.path.join(os.getcwd(), "a.out") + error = lldb.SBError() + + self.target = self.dbg.CreateTarget(exe) + self.assertTrue(self.target, VALID_TARGET) + + exception_bkpt = self.target.BreakpointCreateForException(lldb.eLanguageTypeC_plus_plus, False, True) + self.assertTrue (exception_bkpt.IsValid(), "Created exception breakpoint.") + + process = self.target.LaunchSimple (None, None, self.get_process_working_directory()) + self.assertTrue(process, PROCESS_IS_VALID) + + thread_list = lldbutil.get_threads_stopped_at_breakpoint (process, exception_bkpt) + self.assertTrue (len(thread_list) == 1, "One thread stopped at the exception breakpoint.") + +if __name__ == '__main__': + import atexit + lldb.SBDebugger.Initialize() + atexit.register(lambda: lldb.SBDebugger.Terminate()) + unittest2.main() diff --git a/lldb/test/functionalities/breakpoint/cpp_exception/main.cpp b/lldb/test/functionalities/breakpoint/cpp_exception/main.cpp new file mode 100644 index 0000000..76cb227 --- /dev/null +++ b/lldb/test/functionalities/breakpoint/cpp_exception/main.cpp @@ -0,0 +1,13 @@ +#include + +void +throws_int () +{ + throw 5; +} + +int +main () +{ + throws_int(); +} -- 2.7.4