""" Test basics of mach core file debugging. """ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class MachCoreTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True # This was originally marked as expected failure on Windows, but it has # started timing out instead, so the expectedFailure attribute no longer # correctly tracks it: llvm.org/pr37371 @skipIfWindows def test_selected_thread(self): """Test that the right thread is selected after a core is loaded.""" # Create core form YAML. self.yaml2obj("test.core.yaml", self.getBuildArtifact("test.core")) # Set debugger into synchronous mode self.dbg.SetAsync(False) # Create a target by the debugger. target = self.dbg.CreateTarget("") # Load OS plugin. python_os_plugin_path = os.path.join(self.getSourceDir(), "operating_system.py") command = "settings set target.process.python-os-plugin-path '{}'".format( python_os_plugin_path ) self.dbg.HandleCommand(command) # Load core. process = target.LoadCore(self.getBuildArtifact("test.core")) self.assertTrue(process, PROCESS_IS_VALID) self.assertEqual(process.GetNumThreads(), 3) # Verify our OS plug-in threads showed up thread = process.GetThreadByID(0x111111111) self.assertTrue( thread.IsValid(), "Make sure there is a thread 0x111111111 after we load the python OS plug-in", ) thread = process.GetThreadByID(0x222222222) self.assertTrue( thread.IsValid(), "Make sure there is a thread 0x222222222 after we load the python OS plug-in", ) thread = process.GetThreadByID(0x333333333) self.assertTrue( thread.IsValid(), "Make sure there is a thread 0x333333333 after we load the python OS plug-in", ) # Verify that the correct thread is selected thread = process.GetSelectedThread() self.assertEqual(thread.GetThreadID(), 0x111111111)