blob: a299a4308bc8d639143c9834d30986577a39b4db [file] [log] [blame]
"""
Test basics of mach core file debugging.
"""
from __future__ import print_function
import shutil
import struct
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
mydir = TestBase.compute_mydir(__file__)
def setUp(self):
super(MachCoreTestCase, self).setUp()
self._initial_platform = lldb.DBG.GetSelectedPlatform()
def tearDown(self):
lldb.DBG.SetSelectedPlatform(self._initial_platform)
super(MachCoreTestCase, self).tearDown()
@expectedFailureAll(bugnumber="llvm.org/pr37371", hostoslist=["windows"])
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(), 0x333333333)