"""
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)