| """ | |
| Test that lldb reports the Windows thread description set via SetThreadDescription. | |
| """ | |
| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class TestThreadName(TestBase): | |
| @requireWindows | |
| @skipIfWindows(windows_version=["<", "10.0.14393"]) | |
| def test_with_thread_description(self): | |
| """SBThread.GetName() reflects SetThreadDescription on Windows.""" | |
| self.build() | |
| source = lldb.SBFileSpec("main.c") | |
| _, process, thread, breakpoint = lldbutil.run_to_source_breakpoint( | |
| self, "// break here", source | |
| ) | |
| self.assertEqual( | |
| breakpoint.GetNumLocations(), | |
| 2, | |
| "expected breakpoints at both '// break here' markers", | |
| ) | |
| # No thread name yet. | |
| self.assertFalse( | |
| thread.GetName(), | |
| "thread should have no name before SetThreadDescription", | |
| ) | |
| process.Continue() | |
| self.assertEqual(process.GetState(), lldb.eStateStopped) | |
| thread = lldbutil.get_stopped_thread(process, lldb.eStopReasonBreakpoint) | |
| self.assertTrue(thread.IsValid(), "no thread stopped at breakpoint") | |
| self.assertEqual(thread.GetName(), "ThreadName") |