Open makavity opened 5 months ago
Hello, just done LLDB SyntheticProvider for GenericArray, it is not ideal, but works :)
import lldb class GenericArraySyntheticProvider: def __init__(self, valobj, internal_dict): self.valobj = valobj self.count = 0 self.extract_values() def extract_values(self): self.values = [] self.types = [] self.count = 0 # Assuming data is the root field containing the array structure data_valobj = self.valobj.GetChildMemberWithName('data') self.traverse(data_valobj) def traverse(self, valobj): if not valobj.IsValid(): return if valobj.GetNumChildren() == 0: return for i in range(valobj.GetNumChildren()): child = valobj.GetChildAtIndex(i) if child.IsValid(): data_child = child.GetChildMemberWithName('data') if data_child.IsValid(): self.values.append(data_child.GetData()) self.types.append(data_child.GetType()) self.count += 1 self.traverse(child) def num_children(self): return self.count def get_child_index(self, name): try: return int(name.lstrip('[').rstrip(']')) except ValueError: return -1 def get_child_at_index(self, index): if index < 0 or index >= self.count: return None value = self.values[index] typo = self.types[index] return self.valobj.CreateValueFromData(f"[{index}]", value, typo) def update(self): # Re-extract values in case the underlying object has changed self.extract_values() def has_children(self): return True def __lldb_init_module(debugger, internal_dict): debugger.HandleCommand(f'type synthetic add -l { __name__ }.GenericArraySyntheticProvider -x "^generic_array::GenericArray<.*>$"')
And command to add it: command script import ~/.lldb/scripts/GenericArray.py in .lldbinit
command script import ~/.lldb/scripts/GenericArray.py
Hello, just done LLDB SyntheticProvider for GenericArray, it is not ideal, but works :)
And command to add it:
command script import ~/.lldb/scripts/GenericArray.py
in .lldbinit