diff options
| author | Michael Buch <michaelbuch12@gmail.com> | 2022-09-14 12:31:25 -0400 |
|---|---|---|
| committer | Michael Buch <michaelbuch12@gmail.com> | 2022-09-14 14:45:35 -0400 |
| commit | 3b44c9af8efd95aba7b4f351e5175ebf02e7b396 (patch) | |
| tree | b93ad00bf948e9eda3df1bb5dc3fa08f6f0a3c0f /lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py | |
| parent | e6226e6b7234e5fce5a928861541cec3a519f379 (diff) | |
[lldb][tests] Move C++ gmodules tests into new gmodules/ subdirectory
This is in preparation for adding more gmodules
tests.
Differential Revision: https://reviews.llvm.org/D133876
Diffstat (limited to 'lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py')
| -rw-r--r-- | lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py b/lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py new file mode 100644 index 000000000000..d79a753f7248 --- /dev/null +++ b/lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py @@ -0,0 +1,92 @@ +import lldb +import os +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestWithGmodulesDebugInfo(TestBase): + + @skipIf(bugnumber="llvm.org/pr36146", oslist=["linux"], archs=["i386"]) + @add_test_categories(["gmodules"]) + def test_specialized_typedef_from_pch(self): + self.build() + + src_file = os.path.join(self.getSourceDir(), "main.cpp") + src_file_spec = lldb.SBFileSpec(src_file) + self.assertTrue(src_file_spec.IsValid(), "breakpoint file") + + # Get the path of the executable + exe_path = self.getBuildArtifact("a.out") + + # Load the executable + target = self.dbg.CreateTarget(exe_path) + self.assertTrue(target.IsValid(), VALID_TARGET) + + # Break on interesting line + breakpoint = target.BreakpointCreateBySourceRegex( + "break here", src_file_spec) + self.assertTrue( + breakpoint.IsValid() and breakpoint.GetNumLocations() >= 1, + VALID_BREAKPOINT) + + # Launch the process + process = target.LaunchSimple( + None, None, self.get_process_working_directory()) + self.assertTrue(process.IsValid(), PROCESS_IS_VALID) + + # Get the thread of the process + self.assertState(process.GetState(), lldb.eStateStopped) + thread = lldbutil.get_stopped_thread( + process, lldb.eStopReasonBreakpoint) + self.assertTrue( + thread.IsValid(), + "There should be a thread stopped due to breakpoint condition") + + # Get frame for current thread + frame = thread.frames[0] + + testValue = frame.EvaluateExpression("test") + self.assertTrue( + testValue.GetError().Success(), + "Test expression value invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + testValue.GetTypeName(), "IntContainer", + "Test expression type incorrect") + + memberValue = testValue.GetChildMemberWithName("storage") + self.assertTrue( + memberValue.GetError().Success(), + "Member value missing or invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + memberValue.GetTypeName(), "int", + "Member type incorrect") + self.assertEqual( + 42, + memberValue.GetValueAsSigned(), + "Member value incorrect") + + testValue = frame.EvaluateExpression("bar") + self.assertTrue( + testValue.GetError().Success(), + "Test expression value invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + testValue.GetTypeName(), "Foo::Bar", + "Test expression type incorrect") + + memberValue = testValue.GetChildMemberWithName("i") + self.assertTrue( + memberValue.GetError().Success(), + "Member value missing or invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + memberValue.GetTypeName(), "int", + "Member type incorrect") + self.assertEqual( + 123, + memberValue.GetValueAsSigned(), + "Member value incorrect") + |
