diff options
| author | Med Ismail Bennani <medismail.bennani@gmail.com> | 2021-10-06 00:09:20 +0000 |
|---|---|---|
| committer | Med Ismail Bennani <medismail.bennani@gmail.com> | 2021-10-08 14:54:07 +0200 |
| commit | 59d8dd79e1f9dead2dc2756e139073083e487228 (patch) | |
| tree | 4f45c1452f97e10655c8e69549ab146ee93d0d2c /lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py | |
| parent | 6393c21d476de2584b3ac010aace6a9b26d5bbec (diff) | |
[lldb/Plugins] Add support for ScriptedThread in ScriptedProcess
This patch introduces the `ScriptedThread` class with its python
interface.
When used with `ScriptedProcess`, `ScriptedThreaad` can provide various
information such as the thread state, stop reason or even its register
context.
This can be used to reconstruct the program stack frames using lldb's unwinder.
rdar://74503836
Differential Revision: https://reviews.llvm.org/D107585
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py')
| -rw-r--r-- | lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py index 5cf49ab37791..70ee1a4d6592 100644 --- a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py +++ b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py @@ -72,6 +72,28 @@ class ScriptedProcesTestCase(TestBase): self.assertTrue(error.Success(), "Failed to read memory from scripted process.") self.assertEqual(hello_world, memory_read) + self.assertEqual(process.GetNumThreads(), 1) + + thread = process.GetSelectedThread() + self.assertTrue(thread, "Invalid thread.") + self.assertEqual(thread.GetThreadID(), 0x19) + self.assertEqual(thread.GetName(), "MyScriptedThread.thread-1") + self.assertEqual(thread.GetStopReason(), lldb.eStopReasonSignal) + + self.assertGreater(thread.GetNumFrames(), 0) + + frame = thread.GetFrameAtIndex(0) + register_set = frame.registers # Returns an SBValueList. + for regs in register_set: + if 'GPR' in regs.name: + registers = regs + break + + self.assertTrue(registers, "Invalid General Purpose Registers Set") + self.assertEqual(registers.GetNumChildren(), 21) + for idx, reg in enumerate(registers, start=1): + self.assertEqual(idx, int(reg.value, 16)) + def test_launch_scripted_process_cli(self): """Test that we can launch an lldb scripted process from the command line, check its process ID and read string from memory.""" |
