| import lldb | |
| class OperatingSystemPlugIn(object): | |
| """Class that provides data for an instance of a LLDB 'OperatingSystemPython' plug-in class | |
| This version stops once with threads 0x111 and 0x222, then stops a second time with threads | |
| 0x111 and 0x333.""" | |
| def __init__(self, process): | |
| """Initialization needs a valid.SBProcess object. | |
| This plug-in will get created after a live process is valid and has stopped for the first time. | |
| """ | |
| self.process = None | |
| self.registers = None | |
| self.threads = None | |
| self.times_called = 0 | |
| if isinstance(process, lldb.SBProcess) and process.IsValid(): | |
| self.process = process | |
| self.threads = None # Will be an dictionary containing info for each thread | |
| def get_target(self): | |
| return self.process.target | |
| def get_thread_info(self): | |
| self.times_called += 1 | |
| if self.times_called == 1: | |
| self.threads = [ | |
| { | |
| "tid": 0x111, | |
| "name": "one", | |
| "queue": "queue1", | |
| "state": "stopped", | |
| "stop_reason": "none", | |
| "core": 1, | |
| }, | |
| { | |
| "tid": 0x222, | |
| "name": "two", | |
| "queue": "queue2", | |
| "state": "stopped", | |
| "stop_reason": "none", | |
| "core": 0, | |
| }, | |
| ] | |
| else: | |
| self.threads = [ | |
| { | |
| "tid": 0x111, | |
| "name": "one", | |
| "queue": "queue1", | |
| "state": "stopped", | |
| "stop_reason": "none", | |
| "core": 1, | |
| }, | |
| { | |
| "tid": 0x333, | |
| "name": "three", | |
| "queue": "queue3", | |
| "state": "stopped", | |
| "stop_reason": "none", | |
| "core": 0, | |
| }, | |
| ] | |
| return self.threads |