summaryrefslogtreecommitdiff
path: root/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py')
-rw-r--r--lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py45
1 files changed, 28 insertions, 17 deletions
diff --git a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
index 70ee1a4d6592..b595d3dba32e 100644
--- a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+++ b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
@@ -43,41 +43,35 @@ class ScriptedProcesTestCase(TestBase):
self.expect('script dir(ScriptedProcess)',
substrs=["launch"])
- def test_launch_scripted_process_sbapi(self):
+ def test_scripted_process_and_scripted_thread(self):
"""Test that we can launch an lldb scripted process using the SBAPI,
- check its process ID and read string from memory."""
+ check its process ID, read string from memory, check scripted thread
+ id, name stop reason and register context.
+ """
self.build()
target = self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
self.assertTrue(target, VALID_TARGET)
- scripted_process_example_relpath = ['..','..','..','..','examples','python','scripted_process','my_scripted_process.py']
+ scripted_process_example_relpath = 'dummy_scripted_process.py'
os.environ['SKIP_SCRIPTED_PROCESS_LAUNCH'] = '1'
self.runCmd("command script import " + os.path.join(self.getSourceDir(),
- *scripted_process_example_relpath))
+ scripted_process_example_relpath))
launch_info = lldb.SBLaunchInfo(None)
launch_info.SetProcessPluginName("ScriptedProcess")
- launch_info.SetScriptedProcessClassName("my_scripted_process.MyScriptedProcess")
+ launch_info.SetScriptedProcessClassName("dummy_scripted_process.DummyScriptedProcess")
error = lldb.SBError()
process = target.Launch(launch_info, error)
self.assertTrue(process and process.IsValid(), PROCESS_IS_VALID)
self.assertEqual(process.GetProcessID(), 42)
- hello_world = "Hello, world!"
- memory_read = process.ReadCStringFromMemory(0x50000000000,
- len(hello_world) + 1, # NULL byte
- error)
-
- 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.GetName(), "DummyScriptedThread.thread-1")
self.assertEqual(thread.GetStopReason(), lldb.eStopReasonSignal)
self.assertGreater(thread.GetNumFrames(), 0)
@@ -94,13 +88,21 @@ class ScriptedProcesTestCase(TestBase):
for idx, reg in enumerate(registers, start=1):
self.assertEqual(idx, int(reg.value, 16))
- def test_launch_scripted_process_cli(self):
+ def test_launch_scripted_process_stack_frames(self):
"""Test that we can launch an lldb scripted process from the command
line, check its process ID and read string from memory."""
self.build()
target = self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
self.assertTrue(target, VALID_TARGET)
+ for module in target.modules:
+ if 'a.out' in module.GetFileSpec().GetFilename():
+ main_module = module
+
+ self.assertTrue(main_module, "Invalid main module.")
+ error = target.SetModuleLoadAddress(main_module, 0)
+ self.assertTrue(error.Success(), "Reloading main module at offset 0 failed.")
+
scripted_process_example_relpath = ['..','..','..','..','examples','python','scripted_process','my_scripted_process.py']
self.runCmd("command script import " + os.path.join(self.getSourceDir(),
*scripted_process_example_relpath))
@@ -108,12 +110,21 @@ class ScriptedProcesTestCase(TestBase):
process = target.GetProcess()
self.assertTrue(process, PROCESS_IS_VALID)
self.assertEqual(process.GetProcessID(), 42)
+ self.assertEqual(process.GetNumThreads(), 1)
error = lldb.SBError()
hello_world = "Hello, world!"
memory_read = process.ReadCStringFromMemory(0x50000000000,
len(hello_world) + 1, # NULL byte
error)
+ thread = process.GetSelectedThread()
+ self.assertTrue(thread, "Invalid thread.")
+ self.assertEqual(thread.GetThreadID(), 0x19)
+ self.assertEqual(thread.GetName(), "MyScriptedThread.thread-1")
- self.assertTrue(error.Success(), "Failed to read memory from scripted process.")
- self.assertEqual(hello_world, memory_read)
+ self.assertEqual(thread.GetNumFrames(), 4)
+ frame = thread.GetSelectedFrame()
+ self.assertTrue(frame, "Invalid frame.")
+ self.assertEqual(frame.GetFunctionName(), "bar")
+ self.assertEqual(int(frame.FindValue("i", lldb.eValueTypeVariableArgument).GetValue()), 42)
+ self.assertEqual(int(frame.FindValue("j", lldb.eValueTypeVariableLocal).GetValue()), 42 * 42)